Java异常处理
来源:互联网 发布:淘宝店铺装修页尾 编辑:程序博客网 时间:2024/06/05 21:57
----------siwuxie095
1、认识异常
异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,
就可能导致程序的中断执行,造成不必要的损失
异常范例:
代码1:
package com.siwuxie095.exception;
class Exc{
int i=10;
}
public class ExceptionDemo01 {
public staticvoid main(String[] args) {
Exc e=null;
//如果注释下面一行代码,会出现空指针异常
//e=new Exc();
System.out.println(e.i);
}
}
运行一览:
出现异常:NullPointerException,空指针异常
代码2:
package com.siwuxie095.exception;
class Exc{
int i=10;
}
public class ExceptionDemo01 {
public staticvoid main(String[] args) {
Exc e=null;
//如果注释下面一行代码,会出现空指针异常
e=new Exc();
int j=0;
//除数为0,出现算术异常
int temp=e.i/j;
System.out.println(temp);
}
}
运行一览:
出现异常:ArithmeticException,算术异常
2、处理异常
异常格式:
try 中放的是异常的语句 或 可能出现异常的语句
catch 可以多个模块,对异常进行捕获
finally 不管程序是否出现异常,都一定会执行
代码1:
package com.siwuxie095.exception;
class Exc{
int i=10;
}
public class ExceptionDemo01 {
public staticvoid main(String[] args) {
Exc e=null;
//如果注释下面一行代码,会出现空指针异常
e=new Exc();
int j=0;
int temp=1;
try {
//除数为0,出现算术异常
temp=e.i/j;
//如果可以确定捕获的异常类型
//可以直接用 ArithmeticException 代替 Exception
}catch (Exception e2) {
System.out.println(e2);
}
System.out.println(temp);
}
}
运行一览:
代码2:
package com.siwuxie095.exception;
class Exc{
int a=10;
int b=0;
}
public class ExceptionDemo01 {
public staticvoid main(String[] args) {
int temp=0;
Exc e=null;
e=new Exc();
try {
temp=e.a/e.b;
System.out.println(temp);
}catch (NullPointerException e2) {
System.out.println(e2);
}catch (ArithmeticException e2) {
System.out.println(e2);
}finally {
System.out.println("程序退出");
}
}
}
运行一览:
是否注释掉:e=new Exc(); 的两种异常捕获
3、常见异常
(1)数组越界异常:ArrayIndexOutOfBoundsException
(2)数字格式化异常:NumberFormatException
(3)算术异常:ArithmeticException
(4)空指针异常:NullPointerException
(5)类型转换异常:ClassCastException
4、throws 关键字
在定义一个方法的时候可以使用throws 关键字声明,
使用throws声明的方法表示此方法不处理异常,抛给
方法的调用者处理
格式:
代码:
package com.siwuxie095.exception;
public class ExceptionDemo02 {
public staticvoid main(String[] args) {
//依然需要捕获异常
try {
tell(10,0);
}catch (Exception e) {
System.out.println(e);
}
}
//将异常抛出,抛给调用者 main() 处理
public staticvoid tell(int i,int j) throws ArithmeticException {
int temp=0;
temp=i/j;
System.out.println(temp);
}
}
运行一览:
或者:如果是主方法抛出异常,将抛给JVM进行处理
package com.siwuxie095.exception;
public class ExceptionDemo02 {
//如果主方法中不再捕获异常,而是也抛出异常,将抛给JVM处理
public staticvoid main(String[] args)throws Exception{
tell(10,0);
}
//将异常抛出,抛给调用者 main() 处理
public staticvoid tell(int i,int j) throws ArithmeticException {
int temp=0;
temp=i/j;
System.out.println(temp);
}
}
运行一览:
JVM处理的异常,不过建议自己try catch 捕获异常更好
5、throw 关键字
throw 关键字抛出一个异常,抛出的时候直接抛出异常类的实例化对象即可
代码:
package com.siwuxie095.exception;
public class ExceptionDemo03 {
public staticvoid main(String[] args) {
try {
//通过throw抛出一个实例化对象的异常
throw new Exception("实例化异常对象");
}catch (Exception e) {
//打印该异常
System.out.println(e);
}
}
}
运行一览:
6、自定义异常
自定义异常直接继承Exception 就可以完成自定义异常类
〔自定义异常一般用于大工程,因为不知道系统抛出的异常到底在何处,
比较难找,这时就需要自定义异常给出具体的提示〕
代码:
package com.siwuxie095.exception;
//继承自Exception
class MyExceptionextends Exception{
//构造方法,参数 msg 用于传递错误信息
public MyException(String msg) {
//通过 super() 调用 Exception里的错误传递
super(msg);
}
}
public class ExceptionDemo04 {
public staticvoid main(String[] args) {
try {
//抛出自己的异常,并提示:自定义异常
throw new MyException("自定义异常");
}catch (MyException e) {
//输出该异常
System.out.println(e);
}
}
}
运行一览:
【made by siwuxie095】
- 【java】java异常处理
- java异常和异常处理
- Java 异常及异常处理
- java异常与异常处理
- Java异常处理-----自定义异常
- Java异常与异常处理
- java异常及异常处理
- Java 异常与异常处理
- Java异常与异常处理
- Java异常及异常处理
- Java异常处理--自定义异常
- JAVA异常之异常处理
- Java异常处理-----自行处理
- Java异常处理-----抛出处理
- Java异常处理-----抛出处理
- java异常处理
- java 异常处理分析
- java异常处理
- 深入C++对象之构造函数语意学
- 变量交换
- 第四章_对象与类
- 微信小程序入门之构建一个简单TODOS应用
- TCP网络编程中connect()、listen()和accept()三者之间的关系
- Java异常处理
- noi-1745-字符串判等
- vpnservice 详解
- iOS开发- 支付宝支付
- servlet过滤器、监听器、struts2拦截器的区别
- MacOSX中设置和改变$PATH变量
- jquery-ui中div拖动出现辅助线方便对齐
- 协调布局CoordinatorLayout的一些方法
- Java使用JNDI配置WEB项目数据源