JAVA学习代码——异常

来源:互联网 发布:时序数据库应用场景 编辑:程序博客网 时间:2024/05/21 06:40

1.异常处理:try-catch-final

2.异常链

3.自定义异常


异常处理:try-catch-final

package 异常及处理;/**----http://blog.csdn.net/junlixxu/article/details/6096266 * 1.java.lang.Throwable作为所有异常的超类。异常类分为两大类,错误Error和异常Exception。 * #Exception又分为运行时异常(RuntimeException)和非运行时异常.  这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception) 和检查异常(Checked Exception) * # Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。这些异常发生时, Java虚拟机(JVM)一般会选择线程终止 * 2..java.lang.Exception类是Java中所有异常的直接或间接父类。即Exception类是所有异常的根类 * 3. Java异常处理涉及到五个关键字,分别是:try、catch、finally、throw、throws * 4..什么是异常?异常是在程序运行过程中所发生的破坏了正常的指令流程的事件。软件和硬件错误都可能导致异常的产生。  * 5. Exception类异常     http://www.cnblogs.com/mengdd/archive/2013/02/03/2890923.html *  * 6.先子类后父类先小后大(顺序写错会报错),有try时,需要添加try-catch可只添加catch,finally:善后工作 *  * 7.异常打印打控制台的位置会稍微不同,看谁抢先线程 *  * 8..空指针异常:java.lang.NullPointerException是空指针异常,出现该异常的原因在于某个引用为null,但却调用了它的某个方法,这时就会出现该异常。 * * 9.try不能独立存在,只能与catch或finally共同存在 * 10.throws异常抛出  ,在方法名后抛出给上级:public void A throws Exception           * 11.自定义异常   格式: class 自定义异常类 extends 异常类型{}  如:public class DrunkException extends Exception{} *  * 12.异常链:把捕获的异常包装成一个新的异常,然后在新的异常里面添加对原始异常的引用,再把新异常抛出,就像链式反应一样一个导致另一个(见ChainTest类) */public class TryCatchTest {public static void main(String[] args) {TryCatchTest tct = new TryCatchTest();//new对象,创建实例对象int result = tct.test();//调方法System.out.println("test()方法执行完了,返回值为:"+result);int result2=tct.test2();System.out.println("test2执行完毕");int result3=tct.test3();System.out.println("我想大声告诉你,test3执行完毕,返回值--:"+result3);}/**test1():try-catch * divider:除数 result:结果 try-catch捕获while循环 * 每次循环。divider减一,result=result+100/divider 如果捕获异常,打印输出“抛出异常了!!!!”,返回-1 * 否则返回result */public int test() {int divider = 10;int result =100;try {while(divider>-1){divider--;//divider为0,异常result =result+100/divider;}return result;//没有抛出异常,返回result作为结果} catch (Exception e) {System.out.println("循环出现异常了!!!");e.printStackTrace();//打印输出异常具体信息return -1;}}/**test2():try-catch-finally * divider:除数 result:结果 try-catch捕获while循环 * 每次循环。divider减一,result=result+100/divider  * 如果捕获异常,打印输出“抛出异常了!!!!”,返回result =999 * 否则返回result * finally:打印输出    这是finally!哈哈     同时打印输出result的值 */public int test2() {int divider = 10;int result =100;try {while(divider>-1){divider--;//divider为0,异常result =result+100/divider;}return result;//没有抛出异常,返回result作为结果} catch (Exception e) {System.out.println("循环出现异常了!!!");e.printStackTrace();//打印输出异常具体信息return result=999;}finally{System.out.println("这是finally!哈哈");//result为最后运行结果System.out.println("我是result,我的值为:"+result);}}/**test3():try-catch-finally * divider:除数 result:结果 try-catch捕获while循环 * 每次循环。divider减一,result=result+100/divider  * 如果捕获异常,打印输出“抛出异常了!!!!” * 否则返回result * finally:打印输出    这是finally!哈哈    同时打印输出result的值 * 最后返回result为1111作为结果 *  * 如果try-catch语句内没有任何return语句,就会调用这三个语句块之外的return语句 */public int test3() {int divider = 10;int result =100;try {while(divider>-1){divider--;//divider为0,异常result =result+100/divider;}} catch (Exception e) {System.out.println("循环出现异常了!!!");e.printStackTrace();//打印输出异常具体信息}finally{System.out.println("这是finally!哈哈");System.out.println("我是result,我的值为:"+result);}//在方法结尾添加输出语句System.out.println("我是test3,我执行完毕");return 1111;}}

异常链

package 异常及处理;//异常链public class ChainTest {/** * -----异常链----- test1():抛出“喝大了"异常 * test2():调用test(),捕获”喝大了“异常,并且包装为运行时异常,继续抛出 * main方法中,调用test2(),尝试捕获test2()方法抛出的异常 */public static void main(String[]args) {ChainTest ct=new ChainTest();//创建ChainTest实例try {ct.test2();} catch (Exception e) {e.printStackTrace();}}/* * public void test1(){ throw new DrunkException("喝车别开酒"); * 抛出了一个新的“喝大了”异常,必须在test1()后面声明将要抛出这种异常 */public void test1() throws DrunkException {throw new DrunkException("喝车别开酒"); }public void test2(){//调用test1//test();//报错:因为test1抛出了一个DrunkException,而这里没有做任何处理,用try-catch包围try {test1();} catch (Exception e) {//RuntimeException newExc = new RuntimeException("司机一滴酒,情人两行泪");//@方法一RuntimeException newExc = new RuntimeException(e);// newExc.initCause(e);//调用newExc的initCause()方法,并将捕获的DrunkException传递进去//@方法一throw newExc;//抛出这个新异常}}}

自定义异常

package 异常及处理;//自定义异常public class DrunkException extends Exception{public DrunkException(){}//添加一个构造方法,和无参的构造方法public DrunkException(String message){super(message);//调用父类Exception的构造方法}}



0 0
原创粉丝点击