异常动手脑总结

网友投稿 269 2022-09-25

异常动手脑总结

package lianxi;import javax.swing.*;public class bo {public static void main(String[] args) {

int i=1, j=0, k;k=i/j;

try{k = i/j; // Causes division-by-zero exception//throw new Exception("Hello.Exception!");}catch ( ArithmeticException e){System.out.println("被0除. "+ e.getMessage());}catch (Exception e){if (e instanceof ArithmeticException)System.out.println("被0除");else{ System.out.println(e.getMessage());}}

finally{JOptionPane.showConfirmDialog(null,"OK");}} }

运行结果:

运行结果分析:

代码报错;显示除零错误;

多层的异常捕获:

代码部分:

package lianxi;import javax.swing.*;public class bo {public static void main(String[] args) {

try { try { throw new ArrayIndexOutOfBoundsException(); } catch(ArrayIndexOutOfBoundsException e) { System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch"); }throw new ArithmeticException(); } catch(ArithmeticException e) { System.out.println("发生ArithmeticException"); } catch(ArrayIndexOutOfBoundsException e) { System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch"); } } }

运行结果:

运行结果分析:

捕获了内层的try catch

package lianxi;import javax.swing.*;public class bo {public static void main(String[] args) {

try {try { throw new ArrayIndexOutOfBoundsException(); } catch(ArithmeticException e) { System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch"); }throw new ArithmeticException(); } catch(ArithmeticException e) {System.out.println("发生ArithmeticException"); } catch(ArrayIndexOutOfBoundsException e) { System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch"); } } }

运行结果:

运行结果分析:

捕获了外层的try catch

动手动脑代码练习

代码部分:

package lianxi;import javax.swing.*;public class bo {public static void main(String[] args) {

int result;try {System.out.println("in Level 1");

try {System.out.println("in Level 2");// result=100/0; //Level 2try {System.out.println("in Level 3");result=100/0; //Level 3} catch (Exception e) {System.out.println("Level 3:" + e.getClass().toString());}finally {System.out.println("In Level 3 finally");}// result=100/0; //Level 2

}catch (Exception e) {System.out.println("Level 2:" + e.getClass().toString());}finally {System.out.println("In Level 2 finally");}// result = 100 / 0; //level 1} catch (Exception e) {System.out.println("Level 1:" + e.getClass().toString());}finally {. System.out.println("In Level 1 finally");}} }

运行结果:

今天练习异常处理

下面是代码部分:

package lianxi;import javax.swing.*;public class bo {public static void main(String[] args) {try{

System.out.println("in main");throw new Exception("Exception is thrown in main");

//System.exit(0);

}catch(Exception e)

{System.out.println(e.getMessage());System.exit(0);}finally{System.out.println("in finally");}} }

运行结果:

跟踪异常传播:

下面是代码部分:

package lianxi;import javax.swing.*;public class bo {public static void main(String[] args) {try {method1();}catch ( Exception e ) {System.err.println( e.getMessage() + "\n" );e.printStackTrace();}}public static void method1() throws Exception{method2();}

public static void method2() throws Exception{method3();}

public static void method3() throws Exception{throw new Exception( "Exception thrown in method3" );}}

运行结果:

运行结果分析

代码报错

抛出多个受控异常的方法:

代码部分:

package lianxi;import java.io.*;public class bo{public static void main( String args[] ){try { throwsTest(); } catch(IOException e) { System.out.println("捕捉异常"); }}

private static void throwsTest() throws ArithmeticException,IOException { System.out.println("这只是一个测试"); // 程序处理过程假设发生异常throw new IOException(); //throw new ArithmeticException(); }}

运行结果:

运行结果分析:

成功抛出异常并捕捉异常;

子类抛出受控异常的限制:

代码部分:

import java.io.*;

异常处理连:

代码部分:

/*** 自定义的异常类* @author JinXuLiang**/class MyException extends Exception{public MyException(String Message) {super(Message);}public MyException(String message, Throwable cause) {super(message, cause);}public MyException( Throwable cause) {super(cause);}

}

public class ExceptionLinkInRealWorld {public static void main( String args[] ){try {throwExceptionMethod(); //有可能抛出异常的方法调用}catch ( MyException e ){System.err.println( e.getMessage() );System.err.println(e.getCause().getMessage());}catch ( Exception e ){System.err.println( "Exception handled in main" );}doesNotThrowException(); //不抛出异常的方法调用}

public static void throwExceptionMethod() throws MyException{try {System.out.println( "Method throwException" );

throw new Exception("系统运行时引发的特定的异常"); // 产生了一个特定的异常}catch( Exception e ){System.err.println("Exception handled in method throwException" );//转换为一个自定义异常,再抛出throw new MyException("在方法执行时出现异常",e);}finally {System.err.println("Finally executed in throwException" );}

// any code here would not be reached}

public static void doesNotThrowException(){try {System.out.println( "Method doesNotThrowException" );}catch( Exception e ){System.err.println( e.toString() );}finally {System.err.println("Finally executed in doesNotThrowException" );}

System.out.println("End of method doesNotThrowException" );}}

这就是典型的异常处理代码模板。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:整理用js实现tab标签页
下一篇:雷军公布小米高管团队:只有15人,常程位列其中!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~