JAVA_异常处理
来源:互联网 发布:无锡胡埭加工中心编程 编辑:程序博客网 时间:2024/05/21 01:44
书籍 : java语言程序设计-基础篇(原书第8版) -- 异常处理
try {if(number2 ==0)// throw 类似于方法的调用throw new ArithmeticException("Message : Divisor cannot be zero");System.out.println(number1 / number2);} catch (Exception e) {System.out.println(e.getMessage());}
1.以上 ,throw 主要用在方法体中,方便开发者手动抛出一个错误,用catch捕获并处理 。
还有一个类似关键字是 throws,主要用在声明方法时。有时候一个方法中产生了异常,但是不知道该怎么处理它,那么就放着不管,当有异常抛出时会中断该方法,而异常被抛到这个方法的调用者那里。这个有点像下属处理不了的问题就交到上司手里一样,这种情况称为回避异常。但是这使得调用这个方法就有了危险,因为谁也不知道这个方法什么时候会丢一个什么样的异常给调用者,所以在定义方法时,就需要在方法头部分使用throws来声明这个方法可能回避的异常。
2. 异常类的继承关系 :java.lang.Object -> Throwable -> Exception -> RuntimeException -> ArithmeticException
Throwable 的getMessage方法 :返回此 throwable 的详细消息字符串。
3.异常处理最根本的优势就是将检测错误从处理错误中分离。(想像throws的功能理解这句话 :被调用函数中检测错误,调用函数中处理错误)
4.在java 中有异常处理,那么我们以前编程时方法出现了错误会怎么样? 那就是返回值 。那么类似的还有C++的断言 , 到这里你是否想知道更有类似的有趣的处理方式呢?请看:
各种编程语言中的「错误/异常处理」有哪些成熟的,优雅的或是热门的机制/思想?
http://www.zhihu.com/question/35193523
public class Quotient {public static void main(String[] args) {Scanner input = new Scanner(System.in);boolean continueInput = true;int number = 0;while (continueInput) {try {System.out.println("Enter an integer:");// InputMismatchExceptionnumber = input.nextInt();continueInput = false;} catch (InputMismatchException e) {System.out.println("an integer is required");String c = input.nextLine();System.out.println("nextLine: " + c);}}System.out.println("result is :" + number);}}
1.假如我们一开始输入的是一个非整数,因为nextInt仅仅读取整数,所以这个非整数还是会被遗留在缓冲区,并且按照我们的输入习惯,最后还有一个回车。所以之后的nextLine函数就读取了这个非整数。
2.next和nextLine的区别 。 他们返回的都是字符串。但是:
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next()不能得到带空格的字符串。
而nextLine()的结束符只是Enter键,即nextLine()返回的是Enter键之前的所有字符(所以不包括Enter键),它是可以得到带空格的字符串的。
(C语言中,scanf()的 %c 和 %s ,还有getchar() 和 gets(), 都有类似区分)
public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("Enter a number");int number = input.nextInt();System.out.println(number);String c = input.nextLine();System.out.println(c);}
1.分隔符遗留问题。如果你在使用过了next()和类似于nextInt()、nextDouble()的函数之后使用nextLine() , 你要记得之前的输入遗留下了一个回车,这个回车是可以被nextLine()读取的。你要做的,就是在这两者之间再用一个nextLine()以帮前一次输入“擦屁股”。
2016/4/8: 使用返回值来检测错误也叫“error code” , 最常见的就是蓝屏代码。
参考阅读:百度百科 - 异常处理
结论一:既然捕获了异常,就要对它进行适当的处理。不要捕获异常之后又把它丢弃,不予理睬。(调用printStackTrace算不上“处理异常”。)
结论二:在catch语句中尽可能指定具体的异常类型,必要时使用多个catch。不要试图处理所有可能出现的异常。
结论三:保证所有资源都被正确释放。充分运用finally关键词。
结论四:在异常处理模块中提供适量的错误原因信息,组织错误信息使其易于理解和阅读。
结论五:尽量减小try块的体积。
结论六:全面考虑可能出现的异常以及这些异常对执行流程的影响。
- Java_异常处理
- JAVA_异常处理
- JAVA_异常处理
- java_异常处理
- Java_异常处理
- JAVA_异常处理(2)
- 第六章:Java_异常处理
- Java_异常
- Java_异常
- JAVA_异常
- java_异常
- java_强制类型转换、内部类、异常处理
- Java_基础—try...catch的方式处理异常1
- Java_基础—try...catch的方式处理异常2
- Java_基础—异常的概述和分类/JVM默认处理异常的方式
- Java_基础—异常的注意事项及如何使用异常处理
- java_基础_异常
- Java_自定义异常
- 执行效率问题
- 字符数组逆置
- ROC曲线
- 正则表达式
- Windows 7 光盘卷标的解析?
- JAVA_异常处理
- bzoj 2005: [Noi2010]能量采集
- 关于C++中getline()函数的一个陷阱
- Java笔记
- 关于控件重绘函数/消息 OnPaint,OnDraw,OnDrawItem,DrawItem的区别
- 剑指offer-面试题16.反转链表
- Hdu1068(二分图的最大匹配)
- cloudstack 添加物理主机可能错误总结
- 【湖南集训 4.7】yist