美文网首页
异常处理的写法

异常处理的写法

作者: biubiudog | 来源:发表于2019-03-12 10:50 被阅读0次

ruby中使用begin rescue end语句描述异常处理

begin
    可能会发生异常的处理
rescue
    发生异常时的处理
end

在ruby中,异常及其相关信息都是被作为对象来处理的,在rescue后面制定变量名,可以获得异常对象。

begin
  可能会发生异常的处理
rescue => 引用异常对象的变量
  发生异常时的处理

即使不指定变量名,ruby也会把异常对象赋值给变量$!
不过把变量名明确写出来会使程序更加易懂。

$! 最后发生的异常(异常对象)
$@ 最后发生的异常的位置信息

异常对象的方法

方法名              意义
class            //异常的种类
message         //异常信息
backtrace      //异常发生的位置信息($@ 与$!.backtrace是等价的)

如果发生异常的方法中没有rescue处理,程序会逆向查找调用者中是否定义了异常处理。

后处理

不管是否发生异常都希望执行的处理,在ruby中可以用ensure关键字来定义。

begin
  有可能发生异常的处理
rescue => 变量
  发生异常后的处理
ensure
  不管是否发生异常都希望执行的处理
end

rescue中使用retry后,begin以下的处理会再做一遍。
retry会隔一段时间后再执行一次,如果该处一直是异常,那么程序就会陷入死循环。

rescue修饰符

表达式1 rescue 表达式 2

等同于

begin
  表达式1
rescue
  表达式2
end

异常处理方法的补充
如果异常处理的范围是整个方法体,也就是说整个方法内的程序都用begin end包含的话,我们就可以省略begin以及end,直接书写rescue和ensure部分的程序。

指定需要捕获的异常

当存在多个种类的异常,且需要按异常的种类分别进行处理时,我们可以用多个rescue来分开处理。

begin
  可能发生的异常
rescue Exception1, Exception2 => 变量
  对Exception1或者Exception2的处理
rescue Exception3
  对Exception3的异常处理
rescue
  对上述异常以外的异常的处理
end

主动抛出异常

使用raise方法,可以使程序主动抛出异常。在基于自己判定的条件抛出异常,或者把刚捕获到的异常再次抛出并通知异常的调用者等情况下,我们会使用raise方法。
raise方法有以下4中调用方式:

  • raise message 抛出RunTimeError异常,并把字符串作为message设置给新生成的异常对象。
  • raise 异常类
    抛出指定的异常
  • raise异常类,message
    抛出指定的异常,并把字符串作为message设置给新生成的异常对象。
  • raise
    rescue外抛出RunTimeError。在rescue中调用时,会再次抛出最后一次发生的异常($!)。

相关文章

  • 异常处理的写法

    ruby中使用begin rescue end语句描述异常处理 在ruby中,异常及其相关信息都是被作为对象来处理...

  • Lession13 调试和异常处理

    异常处理 catch的几种写法 自行引发异常throw 思考题 应用程序示例 调试

  • #JS#Promise速查

    基础写法 如果只想对异常处理,可以采用 promise.then( undefined, onRejected )...

  • iOS 异常捕获处理机制(初级篇)

    一、异常处理简介 二、异常捕获案例 使用@try catch捕获异常 例1是最简单的一种写法: 捕获异常之嵌套捕获...

  • 异常的使用

    一、异常的完整写法 二、异常的使用:计算器

  • Java编程常见问题汇总(二)

    重复包装RuntimeException 错误的写法: 正确的写法: 不正确的传播异常 错误的写法: 主要是没有正...

  • react事件处理

    一,事件处理 写法:on+事件名称= {事件处理函数} 类组件触发写法on+事件名称 = 事件处理函数 ---...

  • 同步或异步异常处理

    同步或异步异常处理 同步读取异常处理 异步读取文件异常处理

  • Java 异常

    异常处理机制 异常处理模型:终止模型:当异常发生时,就进入异常处理程序,处理结束并不返回异常发生位置继续执行;恢复...

  • 第十二章:异常处理

    异常处理语法格式: try: ...处理语句 except 异常类型: ...异常处理语句 pytho...

网友评论

      本文标题:异常处理的写法

      本文链接:https://www.haomeiwen.com/subject/ybawpqtx.html