【异常的基本概念】_异常的其他概念笔记`
来源:互联网 发布:中国和韩国的差距知乎 编辑:程序博客网 时间:2024/04/29 01:12
【异常的基本概念】_异常的其他概念笔记`
本章目标:
掌握:throws与throw关键字的作用
掌握Exception与RuntimeException的区别
可以自定义异常类
了解断言的作用及应用
throws关键字
使用throws声明的方法表示此方法不处理异常,而是交给方法的调用处进行处理。
编译时错误:
unreported exception java.lang.Exception;must be caught or declared to be thrown
如果现在连主方法的声明上也使用了throws关键字呢?那么是不是就意味着主方法也可以不处理异常了?
3.1.2 throw关键字
throw关键字的作用是在程序中抛出一个异常。抛出的时候抛出的是一个异常类的实例化对象。
在异常的处理中,try语句中要捕获的是一个异常的对象,那么此异常对象也可以自己抛出。
3.1.3范例:throw与throws的应用
在一般开发中try...catch...finally、throw、throws联合使用的情况是最多的,例如以下的代码:
3.2 、Exception 与 RuntimeException的区别
parseInt()方法的定义格式
public static int parseInt(String s)throws NumberFormatException
此处使用了throws关键字抛出了异常,为什么不用处理,编译也可能通过?
Exception 与 RuntimeException 的区别
这两个类的区别如下:
Exception 在程序中必须使用try...catch进行处理
RuntimeException 可以不使用try...catch进行处理,但是如果有异常产生,则异常将由JVM进行处理
Exception
RuntimeException
IllegalArgumentException
NumberFormatException
3.3自定义异常类
只需要继承Exception就可以完成自定义异常类。因为在JAVA提供的都是标准异常类,如果需要定义自己想要的异常信息的时候就可以自定义异常类。
只要直接继承Exception 类即可
一般如果项目很大的时候有可能自定义异常,可以得到一些准确的信息等等
3.4断言(assert)
在JDK1.4之后,系统增加了断言的功能。就是断定某一个操作的结果肯定是正确的,如果程序执行到出现断言语句的时候发现结果不正确了,则会出现错误的信息。
断言格式: assert boolean 表达式;
assert boolean 表达式:详细信息;
断言本身不会影响程序的执行,但是如果要想让一个断言起作用,则必须对断言进行验证。
-enableassertions ->可以简写为-ea
下面验证程序
java -ea Test.java
出现错误:Exception in Thread "main" java.lang.AssertionError
此断言信息为默认JAVA提供,如果觉得不满意,也可以自己设置错误的信息。
此时,再进行断言验证
D:\expdemo>java -ea Test
Exception in thread "java.lang.AssertionError 数组长度不为0"
本章目标:
掌握:throws与throw关键字的作用
掌握Exception与RuntimeException的区别
可以自定义异常类
了解断言的作用及应用
throws关键字
使用throws声明的方法表示此方法不处理异常,而是交给方法的调用处进行处理。
class Math{ public int div(int i,int j)throws Exception{ int temp = i/j; return temp; }}public class ThrowsDemo01{ public static void main(String[] args){ Math m = new Math(); //实例化Math类对象 System.out.println("除法操作:"+m.div(10,2)); }}
编译时错误:
unreported exception java.lang.Exception;must be caught or declared to be thrown
class Math{ public int div(int i,int j)throws Exception{ int temp = i/j; return temp; }}public class ThrowsDemo01{ public static void main(String[] args){ Math m = new Math(); //实例化Math类对象 try{ System.out.println("除法操作:"+m.div(10,2)); }catch(Exception e){ e.printStackTrace(); } }}
如果现在连主方法的声明上也使用了throws关键字呢?那么是不是就意味着主方法也可以不处理异常了?
class Math{ public int div(int i,int j)throws Exception{ int temp = i/j; return temp; }}public class ThrowsDemo01{ public static void main(String[] args)throws Exception{ Math m = new Math(); //实例化Math类对象 try{ System.out.println("除法操作:"+m.div(10,2)); }catch(Exception e){ e.printStackTrace(); } }}
3.1.2 throw关键字
throw关键字的作用是在程序中抛出一个异常。抛出的时候抛出的是一个异常类的实例化对象。
在异常的处理中,try语句中要捕获的是一个异常的对象,那么此异常对象也可以自己抛出。
public class ThrowDemo02{ public static void main(String[] args){ try{ throw new Exception("自己抛着玩的。"); }catch(Exception e){ e.printStackTrace(); } }}
3.1.3范例:throw与throws的应用
在一般开发中try...catch...finally、throw、throws联合使用的情况是最多的,例如以下的代码:
class Math{ public int div(int i;int j)throws Exception{ System.out.println("****计算开始****"); int temp = 0; //定义局部变量 try{ temp = i/j; //计算,但是此处有可能出现异常 }catch(Exception e){ throw e; }finally{ System.out.println("****计算结束****"); } return temp; }}public class ThrowDemo03{ public static void main(String[] args){ Math m = new Math(); try{ System.out.println("除法操作:"+m.div(10,0)); }catch(Exception e){ e.printStackTrace(); } }}
3.2 、Exception 与 RuntimeException的区别
public class RuntimeExceptionDemo01{ public static void main(String[] args){ String str = "123"; int temp = Integer.parseInt(str); System.out.println(temp); }}
parseInt()方法的定义格式
public static int parseInt(String s)throws NumberFormatException
此处使用了throws关键字抛出了异常,为什么不用处理,编译也可能通过?
Exception 与 RuntimeException 的区别
这两个类的区别如下:
Exception 在程序中必须使用try...catch进行处理
RuntimeException 可以不使用try...catch进行处理,但是如果有异常产生,则异常将由JVM进行处理
Exception
RuntimeException
IllegalArgumentException
NumberFormatException
3.3自定义异常类
只需要继承Exception就可以完成自定义异常类。因为在JAVA提供的都是标准异常类,如果需要定义自己想要的异常信息的时候就可以自定义异常类。
只要直接继承Exception 类即可
class MyException extends Exception{//自定义异常类,继承Exception 类 public MyException(String msg){ super(msg); //调用Exception 类中有一个参数的构造方法,传递错误信息 }}public class DefaultException{ public static void main(String[] args){ try{ throw new MyException("自定义异常"); }catch(Excepton e){ e.printStackTrace(); } }}
一般如果项目很大的时候有可能自定义异常,可以得到一些准确的信息等等
3.4断言(assert)
在JDK1.4之后,系统增加了断言的功能。就是断定某一个操作的结果肯定是正确的,如果程序执行到出现断言语句的时候发现结果不正确了,则会出现错误的信息。
断言格式: assert boolean 表达式;
assert boolean 表达式:详细信息;
public class Test{ public static void main(String args[]){ int[] x = {1,2,3}; //定义数组,长度为3 assert x.length==0; //此处断言数组的长度为0 }}
断言本身不会影响程序的执行,但是如果要想让一个断言起作用,则必须对断言进行验证。
-enableassertions ->可以简写为-ea
下面验证程序
java -ea Test.java
出现错误:Exception in Thread "main" java.lang.AssertionError
此断言信息为默认JAVA提供,如果觉得不满意,也可以自己设置错误的信息。
public class Test{ public static void main(String args[]){ int[] x = {1,2,3}; assert x.length==0:"数组长度不为0"; //此处断言数组的长度为0 }}
此时,再进行断言验证
D:\expdemo>java -ea Test
Exception in thread "java.lang.AssertionError 数组长度不为0"
- 【异常的基本概念】_异常的其他概念笔记`
- 【异常的基本概念】_异常的其他概念笔记`
- 【异常的基本概念】_异常的基本概念笔记
- 【异常的基本概念】_异常的基本概念笔记
- JAVA笔记:异常的基本概念
- 72_异常机制_Exception_Throwable_Error的概念
- 异常的基本概念
- 异常的基本概念
- 异常的基本概念
- 异常的基本概念
- Java--异常的基本概念
- 异常的概念
- 异常的概念
- Java异常的概念
- 异常的基本概念(一)
- 异常的基本概念(二)
- 异常的概念,异常的分类
- 异常的概念和Java异常体系结构
- 启动tomcat就报错:java.lang.ClassNotFoundException: org.apache.commons.beanutils.Converter
- Ubuntu Server 12.04 配置Samba
- oracle asm 剖析系列(3) –disk directory
- IT需求管理之拜访
- Ubuntu安装使用yum(纯属娱乐)
- 【异常的基本概念】_异常的其他概念笔记`
- IT需求管理之研讨会
- 运算符重载1
- poj 3463 最短路与次短路
- CSS中元素内容的浮动属性float
- Web应用的部署(tomcat)
- IT需求管理之研讨
- WININET函数保持sessionID不过期
- ubuntu samba 权限设置