Java中异常处理示例
来源:互联网 发布:python 函数是对象 编辑:程序博客网 时间:2024/06/05 05:41
Exception 的三个方法
package com.liuyanzhao; class ZeroException { int div(int a,int b) throws Exception{ return a/b; } } public class Demo { public static void main(String[] args) { ZeroException z= new ZeroException(); try { int x = z.div(4, 0); System.out.println(x); } catch( Exception e) { System.out.println(e.getMessage());/// by zero System.out.println(e.toString());//java.lang.ArithmeticException: / by zero e.printStackTrace();/*java.lang.ArithmeticException: / by zero at com.liuyanzhao.FushException.div(ExceptionDemo.java:7) at com.liuyanzhao.ExceptionDemo.main(ExceptionDemo.java:15)*/ System.out.println("除0啦");//除0啦 } } }
一个简单的try-catch语句块
package com.liuyanzhao; class ZeroException{ int div(int a,int b) throws Exception{ return a/b; } } public class Demo { public static void main(String[] args) { ZeroExceptionz= new ZeroException(); try { int x = z.div(4, 0); System.out.println(x); } catch( Exception e) { System.out.println(e.toString());//java.lang.ArithmeticException: / by zero } } }
ducking只是在踢皮球,方法和main都抛出
package com.liuyanzhao; /* * 1、 div()已经抛掉了异常 * 连main()抛掉了异常 * 最后只剩下Java虚拟机,你知道这家伙对异常是没有什么责任感的 * Java虚拟机只好死给你看 * 2、 两者都躲避异常,因此没有人来处理 * 但有抛掉了,所以可以通过编译 * 3、 本例的div方法的内的异常是输入RuntimeException * 所以它后面的声明异常(throws Exception)是可有可无的,可以省略 * 但是main方法里要么try/catch处理,要么throws抛掉 */ class ZeroException{ int div(int a,int b) throws Exception { return a/b ; } } public class Demo { public static void main(String[] args) throws Exception { ZeroException z= new ZeroException(); int x = z.div(4, ); System.out.println(x); /* 正常编译,不美观的异常 * Exception in thread "main" java.lang.ArithmeticException: / by zero at com.liuyanzhao.FushException.div(Demo.java:4) at com.liuyanzhao.Demo.main(Demo.java:11) */ } }
自定义异常信息和多个catch
package com.liuyanzhao; /* * 1、throws是在方法声明后面 * throw是在方法里面 * 2、自定义异常信息,需要继承父类Exception * 3、有多个catch,需要从小到大 * 4、异常也是多态的 * 别忘了异常也是对象 * 除了可以被抛出外,也没什么特别的 * 5、可以用super来处理所有异常 * 并不代表就应该这样做 */ class FushException extends Exception{ private String message; public String getMessage() { return message; } public FushException(String message) { this.message = message; //super(message); } int div(int a,int b) throws FushException { if(b<0) throw new FushException("除数不能为负数"); return a/b ; } } public class Demo { public static void main(String[] args) { try { FushException f = new FushException(""); int x = f.div(4,-1); System.out.println(x); } catch (FushException e) { System.out.println(e.getMessage()); } catch(ArithmeticException e) { System.out.println(e.getMessage()); } catch(Exception e) { System.out.println(e.getMessage()); } } }
异常处理规则
①catch和finally不能没有try
public static void main(String[] args) { //try { FushException f = new FushException(); int x = f.div(4, -1); System.out.println(x); //} catch (FushException e) { System.out.println(e.getMessage()); } }
无法通过编译
②try与catch之间不能有程序
public static void main(String[] args) { try { FushException f = new FushException(); int x = f.div(4, -1); System.out.println(x); } int a = 1;//中间不能插入代码 catch (FushException e) { System.out.println(e.getMessage()); } }
无法通过编译
③try一定要有catch或finally
public static void main(String[] args) { try{ FushException f = new FushException(); int x = f.div(4,-1); System.out.println(x); } // catch(FushException e) { // System.out.println(e.getMessage()); // } finally { //清理 } }
这个是合法的,可以通过编译。catch和finally至少需要有一个,但还是要注意 第④项
④自带有finally的try必须要声明异常
public static void main(String[] args) throws FushException{ try{ FushException f = new FushException(); int x = f.div(4,-1); System.out.println(x); } finally { //清理 } }
main必须要throws 异常,可以编译
本文地址:http://liuyanzhao.com/3919.html
转载请注明
阅读全文
0 0
- Java中异常处理示例
- java中如何处理异常代码示例
- Java异常处理示例
- Java中异常示例代码
- Java中异常处理
- Java中异常处理
- java中异常处理
- java中异常处理
- Java中异常处理
- Java中异常处理
- java中处理异常
- java中异常处理
- java异常处理机制示例(java抛出异常、捕获、断言)
- java异常处理机制示例(java抛出异常、捕获、断言)
- java中异常及异常处理
- java中异常处理机制
- JAVA中异常处理问题
- java中异常处理机制
- Linux内核模块编程之Helloworld(初级)
- linux下测试网速
- C json实战引擎 一 , 实现解析部分,json实战
- 常用HTTP状态码
- Android程序员看世界--人工智能AI(1)
- Java中异常处理示例
- 在struts2中获取请求action名称或参数
- dbm数据库操作
- Python 边做边学 8.1 工具类--HTTP工具
- php
- Queue Reconstruction by Height(根据高度重组队列)
- codeforces 797B Odd sum
- python中的模块
- 微信小程序入门篇(一)