JavaSE异常类
来源:互联网 发布:儒道数据分析地址 编辑:程序博客网 时间:2024/06/08 11:29
package com.shuhuadream.www;//异常/* * Throwable常用的方法: * toString()当前异常对象的完整类名 * getMessage()返回的是创建Throwable传入的字符串信息 * printStackTrace()打印异常的栈信息 * */public class Demo08 {public static void main(String[] args){/*//创建一个Throwable对象Throwable t = new Throwable("头晕,感冒");String info = t.toString();String m = t.getMessage();t.printStackTrace();System.out.println(info); //java.lang.Throwable 包名+类名System.out.println(m); */test();}public static void test(){Throwable t = new Throwable();t.printStackTrace();}}
/* * 异常的体系 * ----------|Throwable 所有异常或者错误类的超类 * ------------|Error 错误错误一般是jvm或者是硬件引发的问题,所以我们一般不会通过代码去处理错误的。 * ------------|Exception 异常是需要通过代码去处理 * * 如何区分错误与异常: * 如果程序出现了不正常的信息,如果不正常信息出现了Error结尾的就是错误, * 如果是以Exception结尾的,那么肯定是一个异常 * */
package com.shuhuadream.www;/* * 异常的处理: * * 方式一:捕获处理 * 格式:try{ * 可能发生异常的代码 * }catch(捕获的异常类型 变量名){ * 处理异常的代码。。。 * } * * 捕获处理注意的细节: * 1.经过异常处理之后,那么try-catch块外面的代码可以正常执行 * 2.如果try块中出了异常的代码,那么在try块中出现异常代码后面的代码是不会执行了。 * 3.一个try块后面可以捕获多种异常类型 * * 方式二:抛出异常 * */public class Demo10 {public static void main(String[] args){int[] arr = null;div(4,2,arr);}public static void div(int a,int b,int[] arr){int c = 0;try{c = a/b;System.out.println("数组的长度为:"+arr.length);}catch(ArithmeticException e){System.out.println("toString="+e.toString());}catch(NullPointerException e){System.out.println("出现了空指针异常。。");}System.out.println("c="+c);}}
package com.shuhuadream.www;/* * 异常的处理方式---抛出处理 * * 抛出处理(throw throws) * * 抛出处理要注意的细节: * 1.如果一个方法的内部抛出一个异常,一定要在这个方法上声明抛出 * 2.如果调用了一个声明抛出的异常,那么调用者必须要处理 * 3.如果一个方法内部抛出了异常对象,那么throw语句后面的代码就不会再执行了 * (一个方法遇到了throw关键字,该方法也会马上停止执行的) * 4.在一种情况下,只能抛出一种异常对象 * * throw 和 throws两个关键字 * 1.throw关键字是用于方法内部的,throws是用于方法声明上的 * 2.throw关键字是用于方法内部抛出一个异常对象的,throws关键字是用于在方法声明上声明抛出异常类型的 * 3.throw关键字后面只能有一个异常对象,throws后面一次可以声明抛出多种类型的异常 * * 何时使用抛出处理?何时使用捕获处理?原则是什么? * 如果需要通知调用者,代码出了问题,那么这时候就使用抛出处理 * 如果代码是直接与用户打交道遇到了异常千万不要再抛,再抛的话,就直接给了用户,这个时候就应该使用捕获处理 * * */public class Demo11 {public static void main(String[] args) {try{int arr[] = null;div(4,0,arr);}catch(Exception e){System.out.println("出现异常!!");e.printStackTrace();}}public static void div(int a,int b,int[] arr) throws Exception{if(b==0){throw new Exception();//抛出一个异常对象}else if(arr==null){throw new NullPointerException();}int c = a/b;System.out.println("c="+c);}}
package com.shuhuadream.www;//自定义异常类/* * */public class Demo01 {public static void main(String[] args) {String ip = "192.168.10.100";ip = null;try {feiQ(ip);//调用} catch (NoIpException e) {e.printStackTrace();}}//使用异常类public static void feiQ(String ip) throws NoIpException{if(ip==null){throw new NoIpException("没有插网线");}else{System.out.println("正常显示好友");}}}//自定义一个异常类class NoIpException extends Exception{public NoIpException(String message){super(message);}}
package com.shuhuadream.www;/* * 需求:模拟你去吃木桶饭,如果带钱少于10元,就抛出一个没有带够钱的异常对象, * 如果钱带够了,那么就可以吃上香喷喷的地沟油木桶饭 */public class Demo03 {public static void main(String[] args){int money = 11;try {eatWoodenRice(money);} catch (noMoneyException e) {e.printStackTrace();}}public static void eatWoodenRice(int money) throws noMoneyException{if(money<10){throw new noMoneyException("钱不够");}else{System.out.println("你可以吃上香喷喷的地沟油木桶饭!");}}}//定义异常类class noMoneyException extends Exception{public noMoneyException(String message){super(message);}}
package com.shuhuadream.www;//运行时异常,编译时异常/*异常体系:--------| Throwable 所有错误或者异常的父类--------------| Error(错误)--------------| Exception(异常) 异常一般都通过代码处理 ------------------| 运行时异常: 如果一个方法内部抛出了一个运行时异常,那么方法上 可以声明也可以不 声明,调用者可以以处理也可以不处理。------------------| 编译时异常(非运行时异常、受检异常): 如果一个方法内部抛出了一个编译时异常对象,那么方法上就必须要声明,而且调用者也必须要处理。运行时异常: RuntimeException以及RuntimeException子类 都是属于运行时异常。编译时异常: 除了运行时异常就是编译异常。疑问: 为什么java编译器会如此严格要求编译时异常,对运行时异常如此宽松?运行时异常都是可以通过程序员良好的编程习惯去避免,所以java编译器就没有严格要求处理运行时异常。*/public class Demo04 {public static void main(String[] args){div(4,0);}public static void div(int a,int b){if(b==0){throw new ArithmeticException();//抛出算法异常}int c = a/b;System.out.println("c="+c);}}
阅读全文
0 0
- JavaSE异常类
- JavaSE 异常
- JavaSE---异常
- JAVASE----06----异常
- javaSE异常执行顺序
- javaSE-面向对象-异常
- JAVASE之异常
- JavaSE--异常与线程
- 【JavaSE】day12_异常(Exception)
- javaSE中的异常
- javaSE自定义异常
- JavaSE之异常
- 【javase复习】## day5 异常 ##
- JAVASE总结--异常
- JAVASE之异常
- JavaSE 11 异常处理
- JavaSE 异常处理
- JavaSE 异常、集合
- 正则表达式入门
- Leetcode: Binary Tree Zigzag Level Order Traversal
- 多校联合赛第二场Mammum Sequence(贪心)
- Codeforces Round #425 (Div. 2)比赛总结
- svn
- JavaSE异常类
- 函数的调用过程
- HTML5中的Workers多线程处理
- 对象转型
- 访问同一域名,手机端跳转不同链接
- Linux 字符截取命令
- LeetCode 168 Excel Sheet Column Title
- 【51Nod1070】Bash游戏 V4
- 剑指offer面试题[19]-二叉树的镜像