ruby异常处理:rescue

上传人:re****.1 文档编号:472762863 上传时间:2023-04-17 格式:DOC 页数:2 大小:60KB
返回 下载 相关 举报
ruby异常处理:rescue_第1页
第1页 / 共2页
ruby异常处理:rescue_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《ruby异常处理:rescue》由会员分享,可在线阅读,更多相关《ruby异常处理:rescue(2页珍藏版)》请在金锄头文库上搜索。

1、ruby异常处理:rescue一个运行着的程序常会遇到意外的问题一个要读取的文件不存在当希望存入一些数据时磁盘满了用户可能输入不恰当的数据rubyeeeseeesuceordirectory-some一个健壮的程序会合理并漂亮的处理这些问题面对那些异常是一件讨人厌的工作程序员被要求做到检查每一个可能导致错误发生的系统调用的返回值并立刻做出决定le;pen(some_file,;r);;eprintf(;stderr,;File;doesnt;exist.n;exbytes_read;fread(;buf,1,;bytes_desired,;filef;(bytes_rea;bytes_desi

2、red;re;error;ng;here这项无聊的工作会使程序员最终变得马虎并忽略掉它结果是程序无法应对异常令一方面这样也会降低程序的可读性因为过多的错误处理使有意义的代码也变得杂乱了在ub理就像其它的现代语言我们可以通过隔离的办法处理代码域里的异常因此这有着惊人的效果却又不会为程序员或以后希望读它的其它人造成过度的负担代码域由be开始直到遇到一个异常这将导致转向一个由rescue标记的错误处理代码域如果异常没发生reset代码就不会使用下面的代码返回文本文件的第一行如果有异常则返回ef;firsne(;ilename;);begin;e;=;opensome_file)e.gets;e.cl

3、ose;st;thing;evaluated;is;the;return;value;rescue;t;read;the;le?;then;dont;return;a;se有时我们会希望围绕问题展开创造性工作.这里,如果文件不存在,我们用标准输入代替beginle;=;open(some_file);rescue;le;=end;begin;process;the;input;.rescue;and;deal;with;any;other;exceend;sererer用于rescut;码表示又重新执行be代码这让我们可以压缩前面的例子befile=open(fname)#.processtheinput.rescuefname=STDINretryend但这仍有一点瑕疵一个不存在的文件将导致不停止地retry.你在使用retry做异常处理时应注意到这一点.每个Ruby库在遇到错误时都会提交一个异常,你可以在自己的代码里明确地提交异常用raise来提交异常它带一个参数,也就是描述异常的一个字符串.参数是可选的但不应被省略.之后它可以通过一个特殊的全局变量$!访问.rubyraisetesterrortesterrorrubybegin|raisetest2|rescue|printAnerroroccurred:,$!,n|endAnerroroccurred:test2nil

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号