Ruby之旅(16) 异常处理 rescue与ensure
raise.. #抛出异常
rescue [ExceptionType = StandardException] #捕获指定类型的异常 缺省值是StandardException
$! #表示异常信息
$@ #表示异常出现的代码位置
else #其余异常
..
ensure #不管有没有异常,进入该代码块
end #结束
这是异常处理结构,可以结合$!错误原因,和$@错误位置做一个错误捕获并提示的小程序了,比如
puts
puts "file: #{name = ARGV.shift}"
file = open(name)
i = 0
file.read.each_line{|line| puts "#{i+=1}.#{line}" }
puts
rescue
puts "error:#{$!} at:#{$@}"
ensure
file.close
end
上面的小程序读入一个指定的文件并加入行号进行输出,当产生错误时会输出错误信息以及提示,你可以故意输入一个不存在的文件名。
其实begin相当于c#的try
rescue相当于c#的catch
ensure相当于c#的finaly
raise相当于c#的throw
异常类的结构
异常类 Object
- Exception
- (Interrupt) (ruby 1.7 特性 version 1.6以前的位置)
- NoMemoryError
- ScriptError
- LoadError
- (NameError) (ruby 1.7 特性 version 1.6以前的位置)
- NotImplementedError
- SyntaxError
- SignalException
- Interrupt (ruby 1.7 特性)
- StandardError
- ArgumentError
- IndexError
- KeyError (ruby 1.9 特性)
- IOError
- EOFError
- LocalJumpError
- NameError (ruby 1.7 特性)
- NoMethodError (ruby 1.7 特性)
- RangeError
- FloatDomainError
- RegexpError
- RuntimeError
- SecurityError
- SystemCallError
- Errno::EXXX
- SystemStackError
- ThreadError
- TypeError
- ZeroDivisionError
- SystemExit
- fatal
转载于:https://www.cnblogs.com/coderlee/archive/2008/01/17/1042831.html
Ruby之旅(16) 异常处理 rescue与ensure相关推荐
- Java探索之旅(16)——异常处理
1.异常与异常处理 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来 ...
- Ruby之旅之字符串
Ruby之旅之字符串 String 1.创建字符串的五种方式: ①一对单引号包围字符 如: 'hello' ②一对双引号包围字符 如: "hello" ③%q后面用一对分界符包围的 ...
- WCF后续之旅(16): 消息是如何分发到Endpoint的--消息筛选(Message Filter)
在介绍终结点的ListenUriMode时,我们提到了两个特殊的对象ChannelDispatcher和ChannelListener.这两个对象在整个WCF的消息分发系统中具有重要的地位,在这节里, ...
- 小猪的Python学习之旅 —— 16.采集拉勾网数据分析Android就业行情
小猪的Python学习之旅 -- 16.再尝Python数据分析:采集拉勾网数据分析Android就业行情 标签:Python 一句话概括本文: 爬取拉钩Android职位相关数据,利用numpy,p ...
- Ruby之旅—Ruby的Hello World
1.新建一个记事本,将后缀改为.rb(Ruby程序的源文件自由度非常高,它甚至可以不以.rb作为后缀,但通常建议还是以.rb作为后缀,提高程序的可读性),在记事本中敲入如下代码,保存关闭. puts ...
- 乐鑫Esp32学习之旅16 学习本地语音唤醒离线识别框架 esp-skainet ,如何修改唤醒词? 如何自定义命令词?如何做意图动作?
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- win8 开发之旅(16)---------足球游戏揭秘(2)
游戏的原貌到底是怎么样的了,这节我们给你来揭秘吧. 我们这里遵从先外向里的原则,先局部后整体的原则吧.首先看看他的整体的结构吧!如图所示: 这里没有用分层的概念,而是一个文件夹代表了一个层.层确实蛮多 ...
- 16.异常处理机制:exception
python常见异常总结:http://bbs.fishc.com/forum.php?mod=viewthread&tid=45814&extra=page%3D1%26filter ...
- Ruby 基础教程1-6
1.循环实现方法 循环语句 (while;for; loop,until) 循环方法(times,each) 2.for for 变量 in 对象 主体 end 3.while while 条件 e ...
最新文章
- sysctl -p 重新加载文件/etc/sysctl.conf -a 所有参数 -w 临时指定
- 使用account lock或者account unlock语句
- 目前最常用的计算机机箱类型为_绍兴承接离心风机箱高品质
- linux on win原理,linux on win10 上手体验
- 多层陶瓷电容器用处_陶瓷电容器的用途有哪几种?
- 减少SQL Server ASYNC_NETWORK_IO等待类型
- 有关send()和recv()函数的理解
- linux命令行使用
- spring事务源码执行过程分析
- c51单片机时钟程序汇编语言,51单片机数字钟汇编程序精选.docx
- KBQA-Bert学习记录-构建BERT-CRF模型
- 大气压力换算公式_常用压力单位换算表
- 微信小程序选择开始时间和结束时间控件
- Axure8.0基础教程
- python获取当前星期几
- Monitor Linux —使用zabbix服务器的跨平台固件
- Mac 系统升级ssh报错
- 英语词频统计器分词器基于Java
- Ubuntu 截图工具 Flameshot
- Marvell交换芯片88E6390驱动开发
热门文章
- mongodb排序_MongoDB排序
- python 字符串函数_Python字符串函数
- [修复] Eclipse – Java编译器级别与已安装的Java项目构面的版本不匹配
- 工作流 节点子线程_节点JS体系结构–单线程事件循环
- Docker入门命令:开发人员版
- zTree入门实例(一眼就看会)
- C语言嵌入式系统编程修炼之(四)屏幕操作
- 常用sql001_partition by 以及 row_number()和 dense_rank()和rank()区别
- mysql homedir迁移
- linux内核编译(升级)