java怎么拦截某个对象
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~