精华内容
下载资源
问答
  • C语言错误处理

    千次阅读 2019-01-13 19:59:58
    C语言错误处理 1、什么是错误处理? 程序错误是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。错误处理程序是指软件系统中用于处理错误的程序。在编程语言中,错误处理...

    C语言错误处理

    1、什么是错误处理?

    程序错误是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。错误处理程序是指软件系统中用于处理错误的程序。在编程语言中,错误处理模型一般可以分为:返回值模型、全局错误标志模型、恢复性模型和限制性模型。

    2、C语言的错误处理

    C程序员没有异常机制,一般用返回值标识错误,判断返回值进行错误的处理。

    2.1 返回值表示出错的常见情况

    1、如果函数返回值是int ,并且返回的数据不可能是负数,直接返回-1表示出错,非负数代表正常返回数据。

    2、如果函数返回值是int ,但返回的数据也可能是负数;返回0代表正常,-1代表出错。用指针类型的参数带出返回的数据。

    3、如果函数返回值是指针类型,返回NULL(0)代表出错,其他代表正常。

    4、如果函数不需要考虑出错情况,可以用void返回值。

    注:以上4中情况,不是绝对的,只是经验的总结。比如:有些时候,返回-1代表错误的指针。

    2.2 C标准的错误处理

    C标准中,对于错误处理提供了一个全局变量和3个函数:

    全局变量:

    errno --外部的全局变量,用于储存错误的编号。

    函数:

    strerror()/perror()/printf() 都可以把错误的编号变成错误的信息。

    1、strerror()  --传入一个错误的编号,返回一个错误的信息

    2、perror()    --打印当前的错误信息(自动查找errno得到的错误编号)

    3、printf("%m")    --打印当前错误信息(自动查找errno)

    errno的值,在调用函数时,如果函数出错,errno就会改变;但在调用函数时,如果不出错,errno的值不变。因此,不能用errno判断某个函数是不是出错,只能通过函数的返回值判断是否出错。errno的作用是出了错之后,获得具体的错误信息。

    注:errno不是所有的函数都使用,某些函数没有使用(线程)

    示例:

    fopen("a.txt") perror("opena");

    fopen("b.txt") perror("openb");

    展开全文
  • C 错误处理

    万次阅读 2020-07-06 13:40:36
    C错误处理 C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码errno,该错误...

    C 错误处理

    C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno,该错误代码是全局变量,表示在函数调用期间发生了错误。您可以在 errno.h 头文件中找到各种各样的错误代码。

    所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适当的动作。开发人员应该在程序初始化时,把 errno 设置为 0,这是一种良好的编程习惯。0 值表示程序中没有错误。

    errno、perror() 和 strerror()

    C 语言提供了 perror() 和 strerror() 函数来显示与 errno 相关的文本消息。

    • perror() 函数显示您传给它的字符串,后跟一个冒号、一个空格和当前 errno 值的文本表示形式。
    • strerror() 函数,返回一个指针,指针指向当前 errno 值的文本表示形式。

    让我们来模拟一种错误情况,尝试打开一个不存在的文件。您可以使用多种方式来输出错误消息,在这里我们使用函数来演示用法。另外有一点需要注意,您应该使用 stderr 文件流来输出所有的错误。

    实例

    #include <stdio.h>
    #include <errno.h>
    #include <string.h>
     
    extern int errno ;
     
    int main ()
    {
       FILE * pf;
       int errnum;
       pf = fopen ("unexist.txt", "rb");
       if (pf == NULL)
       {
          errnum = errno;
          fprintf(stderr, "错误号: %d\n", errno);
          perror("通过 perror 输出错误");
          fprintf(stderr, "打开文件错误: %s\n", strerror( errnum ));
       }
       else
       {
          fclose (pf);
       }
       return 0;
    }

    当上面的代码被编译和执行时,它会产生下列结果:

    错误号: 2
    通过 perror 输出错误: No such file or directory
    打开文件错误: No such file or directory

    被零除的错误

    在进行除法运算时,如果不检查除数是否为零,则会导致一个运行时错误。

    为了避免这种情况发生,下面的代码在进行除法运算前会先检查除数是否为零:

    实例

    #include <stdio.h>
    #include <stdlib.h>
     
    main()
    {
       int dividend = 20;
       int divisor = 0;
       int quotient;
     
       if( divisor == 0){
          fprintf(stderr, "除数为 0 退出运行...\n");
          exit(-1);
       }
       quotient = dividend / divisor;
       fprintf(stderr, "quotient 变量的值为 : %d\n", quotient );
     
       exit(0);
    }

    当上面的代码被编译和执行时,它会产生下列结果:

    除数为 0 退出运行...

    程序退出状态

    通常情况下,程序成功执行完一个操作正常退出的时候会带有值 EXIT_SUCCESS。在这里,EXIT_SUCCESS 是宏,它被定义为 0。

    如果程序中存在一种错误情况,当您退出程序时,会带有状态值 EXIT_FAILURE,被定义为 -1。所以,上面的程序可以写成:

    实例

    #include <stdio.h>
    #include <stdlib.h>
     
    main()
    {
       int dividend = 20;
       int divisor = 5;
       int quotient;
     
       if( divisor == 0){
          fprintf(stderr, "除数为 0 退出运行...\n");
          exit(EXIT_FAILURE);
       }
       quotient = dividend / divisor;
       fprintf(stderr, "quotient 变量的值为: %d\n", quotient );
     
       exit(EXIT_SUCCESS);
    }

    当上面的代码被编译和执行时,它会产生下列结果:

    quotient 变量的值为 : 4
    展开全文
  • Lua 错误处理

    千次阅读 2018-04-18 21:19:11
    程序运行中错误处理是必要的,在我们进行文件操作,数据转移及web service 调用过程中都会出现不可预期的错误。如果不注重错误信息的处理,就会造成信息泄露,程序无法运行等情况。  任何程序语言中,都需要错误...

        程序运行中错误处理是必要的,在我们进行文件操作,数据转移及web service 调用过程中都会出现不可预期的错误。如果不注重错误信息的处理,就会造成信息泄露,程序无法运行等情况。

       任何程序语言中,都需要错误处理。错误类型有:

       ·语法错误

       ·运行错误

     

    语法错误

       语法错误通常是由于对程序的组件(如运算符、表达式)使用不当引起的。一个简单的实例如下:

    -- test.lua 文件
    a == 2

     

       以上代码执行结果为:

    lua: test.lua:2: syntax error near '=='

       正如你所看到的,以上出现了语法错误,一个 "=" 号跟两个 "=" 号是有区别的。一个 "=" 是赋值表达式两个 "=" 是比较运算。另外一个实例:

    for a= 1,10
       print(a)
    end

       执行以上程序会出现如下错误:

    lua: test2.lua:2: 'do' expected near 'print'

       语法错误比程序运行错误更简单,运行错误无法定位具体错误,而语法错误我们可以很快的解决,如以上实例我们只要在for语句下添加 do 即可:

    for a= 1,10
    do
       print(a)
    end

    运行错误

     

        运行错误是程序可以正常执行,但是会输出报错信息。如下实例由于参数输入错误,程序执行时报错:

    function add(a,b)
       return a+b
    end
    
    add(10)

       当我们编译运行以下代码时,编译是可以成功的,但在运行的时候会产生如下错误:

    lua: test2.lua:2: attempt to perform arithmetic on local 'b' (a nil value)
    stack traceback:
        test2.lua:2: in function 'add'
        test2.lua:5: in main chunk
        [C]: ?

      以下报错信息是由于程序缺少 b 参数引起的。

    错误处理

     

       我们可以使用两个函数:assert 和 error 来处理错误。实例如下:

    local function add(a,b)
       assert(type(a) == "number", "a 不是一个数字")
       assert(type(b) == "number", "b 不是一个数字")
       return a+b
    end
    add(10)

     

       执行以上程序会出现如下错误:

    lua: test.lua:3: b 不是一个数字
    stack traceback:
        [C]: in function 'assert'
        test.lua:3: in local 'add'
        test.lua:6: in main chunk
        [C]: in ?

       实例中assert首先检查第一个参数,若没问题,assert不做任何事情;否则,assert以第二个参数作为错误信息抛出。

     

    error函数

     

    语法格式:

    error (message [, level])

    功能:终止正在执行的函数,并返回message的内容作为错误信息(error函数永远都不会返回)

    通常情况下,error会附加一些错误位置的信息到message头部。

    Level参数指示获得错误的位置:

    • Level=1[默认]:为调用error位置(文件+行号)
    • Level=2:指出哪个调用error的函数的函数
    • Level=0:不添加错误位置信息

     

    pcall 和 xpacll、debug

     

       Lua中处理错误,可以使用函数pcall(protected call)来包装需要执行的代码。pcall接收一个函数和要传递个后者的参数,并执行,执行结果:有错误、无错误;返回值true或者或false, errorinfo。

       语法格式如下

    if pcall(function_name, ….) then
    -- 没有错误
    else
    -- 一些错误
    end

       简单实例:

    > =pcall(function(i) print(i) end, 33)
    33
    true
       
    > =pcall(function(i) print(i) error('error..') end, 33)
    33
    false        stdin:1: error..
    > function f() return false,2 end
    > if f() then print '1' else print '0' end
    0

     

        pcall以一种"保护模式"来调用第一个参数,因此pcall可以捕获函数执行中的任何错误。通常在错误发生时,希望落得更多的调试信息,而不只是发生错误的位置。但pcall返回时,它已经销毁了调用桟的部分内容。

        Lua提供了xpcall函数,xpcall接收第二个参数——一个错误处理函数,当错误发生时,Lua会在调用桟展看(unwind)前调用错误处理函数,于是就可以在这个函数中使用debug库来获取关于错误的额外信息了。

        debug库提供了两个通用的错误处理函数:

    • debug.debug:提供一个Lua提示符,让用户来检查错误的原因
    • debug.traceback:根据调用桟来构建一个扩展的错误消息
    >=xpcall(function(i) print(i) error('error..') end, function() print(debug.traceback()) end, 33)
    33
    stack traceback:
    stdin:1: in function <stdin:1>
    [C]: in function 'error'
    stdin:1: in function <stdin:1>
    [C]: in function 'xpcall'
    stdin:1: in main chunk
    [C]: in ?
    false        nil

     

    xpcall 使用实例 2:

    function myfunction ()
       n = n/nil
    end
    
    function myerrorhandler( err )
       print( "ERROR:", err )
    end
    
    status = xpcall( myfunction, myerrorhandler )
    print( status)

     

    执行以上程序会出现如下错误:

    ERROR:    test2.lua:2: attempt to perform arithmetic on global 'n' (a nil value)
    false

    参考:

    https://www.yuque.com/docs/share/577a459f-e706-415f-b867-1ebe280fc4a8

    展开全文
  • 【Kettle】 错误处理

    千次阅读 2017-11-17 16:46:34
    2.鼠标点中你想进行错误处理的控件,右键选择定义错误处理 3.在错误处理页面输入下列信息,诺执行中产生错误则会以下列字段显示 4。制定你计划中在产生错误后的处理步骤,连接选择错误处理步骤,我这里以产生...

    1.新建基本转换控件,这里便于方便,就建了2个

    2.鼠标点中你想进行错误处理的控件,右键选择定义错误处理

    3.在错误处理页面输入下列信息,诺执行中产生错误则会以下列字段显示

     

    4。制定你计划中在产生错误后的处理步骤,连接选择错误处理步骤,我这里以产生错误什么都不做为例

    5.要是你想输出错误日志到数据库中的表中,可以制定表输出错误处理步骤,建错误信息记录到表里面

    展开全文
  • Spring Boot |错误处理机制

    千次阅读 2020-05-07 22:47:51
    文章目录一、SpringBoot错误处理机制1.1 默认错误处理1.2 错误处理原理二、定制错误页面(实现)2.1 服务端:定制错误的页面2.2 客户端:定制错误的json数据 一、SpringBoot错误处理机制 1.1 默认错误处理 浏览器访问...
  • RxJava错误处理

    千次阅读 2016-05-01 22:58:14
    概述Rxjava中,在错误出现的时候就会调用Subscriber的onError方法将错误分发出去,由Subscriber自己来处理错误。...RxJava中错误处理的操作符为 Catch和 Retry。Catch类似于java 中的try/catch,拦
  • Spring Boot错误处理

    千次阅读 2017-11-22 13:25:28
    Spring Boot常见的错误处理方法有三种,在实际使用的过程中选择其中一种即可。 方法一:Spring Boot 将所有的错误默认映射到/error, 实现ErrorController。package com.lemon.springboot.controller;import org.slf...
  • MySql错误处理-错误处理的例子

    千次阅读 2015-08-16 13:48:18
    有几种错误处理的声明形式:  § 如果任何错误(不是 NOT FOUND ) , 设置 l_error 为 1 后继续执行:  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION  SET l_error=1;  § 如果发生任何错误(不是 NOT FOUND), ...
  • laravel 错误处理,接口错误返回json

    千次阅读 2018-02-27 14:42:11
    laravel 错误处理,接口错误返回json
  • 词法分析阶段的错误处理

    千次阅读 2019-02-19 15:53:24
    文章目录词法分析阶段可检测错误的类型:词法错误检测:错误处理 词法分析阶段可检测错误的类型: 单词拼写错误: 例:int i = 0x3G(16进制数表示错误)、float j = 1.05e(指数表示错误) 非法字符:例如~、@等 ...
  • 上篇文章我们讲解了使用Hibernate Validation来校验数据,当校验完数据后,如果发生错误我们需要给客户返回一个错误信息,因此这节我们来讲解一下SpringBoot默认的错误处理机制以及如何自定义异常来处理请求错误。...
  • HTTP Status 400 – Bad Request 错误处理

    万次阅读 2019-06-13 17:26:23
    HTTP Status 400 错误处理错误描述异常原因发出请求的页面处理请求的controllerpo定义解决方法 错误描述 前台页面采用spring mvc的form表单进行提交请求,结果页面出现如下错误: HTTP Status 400 – Bad Request ...
  • SpringBoot_错误处理机制_定制错误

    千次阅读 2019-08-05 22:47:49
    SpringBoot_错误处理机制_定制错误
  • Golang try catch与错误处理

    万次阅读 2019-06-12 23:38:20
    虽然在使用Golang的时候发现没有try catch这种错误处理机制但是想一想golang作为一门优雅的语言,似乎也是情理之中。因为在java中 throws在函数签名中有一个关键字,旨在使异常流程比较简洁,但是一旦预期的异常数量...
  • JS 错误处理与调试

    千次阅读 热门讨论 2015-07-27 16:18:11
    在程序开发中难免会遇到一些错误,在成千上万的代码中去寻找错误很明显相当于大海捞针,为此,每种计算机编程语言都要它独特的一套错误处理与调试机制。当然,JavaScript也不例外。   发生错误: 执行代码时...
  • 详解Swift中的错误处理

    千次阅读 2017-03-19 16:49:05
    良好的错误处理能够让你的代码健壮性提高,提高程序的稳定性。本文的Swift版本:Swift 3Objective C返回nil如果出错了,就返回空是Objective C中的一种常见的处理方式。因为在Objective C中,向nil发送消息是安全的...
  • Lua 错误处理方法

    千次阅读 2015-10-24 09:46:58
    Lua 错误处理方法
  • CAN总线-错误处理机制分析

    千次阅读 2019-03-03 01:17:06
    CAN总线-错误处理机制分析 在工作中提及CAN错误大家首先会想到的是Busoff故障,但是大家考虑过CAN总线是如何诊断出Busoff故障?总线上那种状态属于故障状态?总线故障后立即触发Busoff吗?总线故障后如何恢复?那么...
  • kettle中定义错误处理

    千次阅读 2019-06-12 09:55:59
    在某些时候,并不希望kettle停止运行,这时候可以使用错误处理(Step Error Handling)。错误处理允许你配置一个步骤来取代出现错误时停止运行一个转换,出现错误的记录行将会传递给另一个步骤。在Step error ...
  • 神奇的 Swift 错误处理

    千次阅读 2016-08-01 10:54:02
    Swift 中的错误处理从 O-C 沿袭而来,但 Swift 1.0 之后逐渐发生了巨大改变。重要的改变发生在 Swift 2,它率先使用了“处理非异常的状态和条件”的做法,使你的 app 变得更加简单。类似于其它编程语言,在 Swift 中...
  • CUDA编程的错误处理

    万次阅读 2017-04-21 01:04:37
    转载于CUDA编程的错误处理关于错误处理无论是基于CPU的编程还是基于GPU的编程,当我们调用了一个API运行程序产生了错误,就会导致程序运行结果有悖于理论结果,甚至导致程序崩溃。因此,错误的检测和错误的处理在...
  • LabVIEW中的错误处理

    千次阅读 2016-09-29 17:09:00
    如何合理使用LabVIEW中的自定义错误处理功能;对于可预见的错误,是否可以选择直接忽略,或者前几次尝试忽略直到该特定错误出现很多次后才通知用户需要纠正该错误了;是否可以对重要的错误进行存档;当主VI中多个...
  • Android VideoView状态跟踪和错误处理

    万次阅读 2016-07-07 17:51:04
    Android VideoView状态跟踪和错误处理
  • go语言中错误处理

    千次阅读 2019-08-09 17:06:43
    go语言中错误处理 一、基本说明 Go 语言追求简洁优雅,所以,Go 语言不支持传统的 try…catch…finally 这种处理。 Go 中引入的处理方式为:defer, panic, recover 这几个异常的使用场景可以这么简单描述:Go 中...
  • express 中的错误处理

    千次阅读 2019-03-30 21:19:50
    node中错误处理 node中抛出一个uncaughtException应该要让node进程直接结束。而不是通过process.on('uncaughtException',handler)进行统一处理。 如果真要全局捕获错误,可以像下面这样处理: process .on('...
  • 错误处理之函数返回值OR异常处理

    千次阅读 2016-05-06 11:04:22
    1、错误处理的方法有哪些? 2、使用函数返回值还是抛出异常? 3、PHP 原框架下的异常处理机制是怎样的? 4、PHP Yii框架下的错误处理方案是怎样的?有什么参考意义?错误处理的方法有哪些? 函数返回值:既return...
  • VBA中的错误处理

    千次阅读 2017-11-21 16:22:00
    从理论上讲,VBA没有提供任何的错误处理机制,这种被用在微软Office产品中的以Visual Basic语言为基础的脚本语言根本就不要任何的错误处理,当程序出现错误或产生异常情况时,VBA会自动定位到出错的代码行,然后提示...
  • Express错误处理中间件的参数使用

    千次阅读 2016-10-12 01:42:48
    Express中,错误处理通过特殊的中间件来完成。如前所述,一般中间件的参数为3个:req,res, next。如果你use一个4个参数的中间件,它将被Express视为错误处理中间件。下面便是一个错误处理中间件,当出于开发环境时...
  • kettle中javascript步骤错误处理

    千次阅读 2014-10-23 08:35:04
    举例说明kettle中javascript步骤的错误处理功能。
  • php程序访问报500错误处理方案

    万次阅读 2018-12-02 00:04:54
    php程序访问报500错误处理方案 1. PHP程序语法错误导致 2. 磁盘满了导致

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,582,649
精华内容 1,033,059
关键字:

错误处理