Ruby的异常处理

如果异常处理范围是整个方法体,可以省略begin和end,直接写rescure和ensure部分的程序,不过要写在最后,避免后面的方法体内容被跳过。

def foo
    方法体
rescure => ex
    异常处理
ensure
    后处理
end

范例:


begin  input = File.open("liuyang.txt")  input.each do |line|    printf("%s,%d", line, line.size)  end  input.close  a =1  printf("\n%d\n", a)rescue => ex  puts "**************"  puts ex.message #message : 异常信息  puts ex.backtrace #backtrace / [email protected] : 异常的位置信息  sleep(3)  retry #使用retry后,begin一下的处理会再重新做一遍ensure  puts "no matter what happened , execute" #不管是否发生异常,这需要执行end
 
时间: 2024-10-25 01:46:10

Ruby的异常处理的相关文章

php、python、ruby——web脚本语言的比较

原文地址:http://klau.si/php-vs-python-vs-ruby 摘要 在过去几年里,在web应用程序编程中,脚本语言变得越来越受欢迎.本论文试图在如今三种最受欢迎的语言:PHP.Python和Ruby中找到其中的差异.优点.缺点.很明显,他们有他们自己的观点和支持,所以要陈述客观事实并满足一种科学的方法是一项困难的任务.这三种语言将在web应用程序环境进行有关历史.进化.流行程度.语法.语义.功能.安全性和性能方面做评估.最后,一个最终的结论将建议最有前途的一种语言. 1.介

ruby编程中异常处理的实践解析

在Ruby开发(http://www.maiziedu.com/course/ruby-px/)中提供了一个很好的机制来处理异常.很多学习ruby的朋友会经常忽视异常处理,特别是ruby/rails 圈,几乎大家都没怎么写过异常处理的代码.其实异常处理还是挺重要的,想写出出色的代码,必须得了解清楚异常的机制以及异常处理的最佳实践. 关于异常处理,问题无非是下面几个,并且各个高级语言的异常处理大同小异,使用上没有太大区别: 异常是为了解决什么问题而出现的? 异常都有哪些类型?分别应该怎么应对? 什

Ruby异常处理的基础

异常处理的优点:程序不需要逐个确认处理结果,也能自动检查出程序错误会同时报告发送错误的位置,便于排查错误正常处理与错误处理的程序可以分开书写,使程序便于阅读 异常处理的语法:如果异常处理的范围是整个方法体或者类,可以省略begin以及endbegin 可能会发生异常的处理rescue 异常类 发生异常时的处理rescue => 引用异常对象的变量 发生异常时的处理rescue 对上述异常以外的异常的处理ensure 不管是否发生异常都希望执行的处理end 主动抛出异常:raise 异常类----

ruby注意点

1.强类型,即不会自动进行类型转换,而C/C++为弱类型. # Ruby i = 1 puts "Value is " + i # TypeError: can't convert Fixnum into String # from (irb):2:in `+' # from (irb):2 2.完全地OO(Object-Oriented面向对象),所有方法都是对对象,无全局函数. strlen(“test”) # error “test”.length 3.变量:以小写开头. my_

ruby错误处理和异常

一.常见异常 异常名 常见原因 怎样抛出 RuntimeError raise抛出的默认异常 raise NoMethodError 对象找不到对应的方法 a=Oject.new a.jackmethod NameError 解释器碰到一个不能解析为变量或方法名的标识符 a=jack IOError 读关闭的流,写只读的流,或类似的操作 STDIN.puts("不能写入") Errno::error 与文件IO相关的一类错误 File.open(-10) TypeError 方法接受到

[每日一题]说说异常处理机制和最佳实践

这个问题仁者见仁智者见智,每个人心中的最佳实践不见得一致,但是你要有想法,这个很关键,如果连思考都没有思考过,那就不太好了. 很多高级语言都提供了异常处理,比如Java.Python.Ruby,比较底层的语言,比如C,没有提供异常机制,最近时兴的Golang,也没有提供通常的try-catch异常机制. 异常机制是必须的么?显然不是,因为我们通常可以用多个返回值来解决,如果语言本身不支持多返回值,那异常机制就是必须的,否则这个语言写起来真的会很痛苦,你想想是不是这样?:) 异常,故名思议,就是不

Ruby环境搭建

刚接触Ruby,发现Ruby真心强大,搞了那么久的Java了,已经被Java的繁琐的语法整的无语透顶了,尤其的Java异常,设计出来就是个失败呀!Ruby目前更新到了2.x了,社区也很活跃,开发效率和Java相比不是搞了一个级别. 先从感性上对比一下Ruby和Java的编码效率,Java真是弱到爆了.就拿常用的读文件的例子吧: 先上Java代码,相信很多朋友都会这么写: 1 import java.io.File; 2 import java.io.FileInputStream; 3 impo

从0到1,教你实现基于Ruby的watir-webdriver自动化测试

一.为什么选择Ruby [1]完全开源. [2]多平台:Ruby可以运行在Linux, UNIX, Windows, MS-DOS, BeOS, OS/2.. [3]多线程:线程就是指在一个程序中处理若干控制流的功能.与OS提供的进程不同的是,线程可以共享内存空间. [4]完全面向对象. [5]不需要内存管理:具有垃圾回收(Garbage Collect, GC)功能,能自动回收不再使用的对象. [6]解释执行:其程序无需编译即可轻松执行. [7]功能强大的字符串操作/正则表达式. [8]具有异

Exception异常处理机制

为什么要自定义自己的Exception ,Java Exception机制与传统的C语言的异常处理机制有什么不同,这种Exception机制的意义在什么地方?接下来咱就来和你一起探讨Exception 的优缺点. 早期的C语言的异常处理机制,通常是我们人为的对返回结果加一些标志来进 行判定,比如发生错误返回什么标志,正常情况下我们又是返回什么标记,而这些都不是语言本身所赋予我们的,而对于C语言这种机制又有什么问题哩?为什么新 一代的语言 Java Ruby C# 等都用Exception机制而不