【安博培训技术】Java4 异常处理 20130919
2013-09-21 09:37
483 查看
异常处理,调试
异常分为:
1. 检查异常
必须人为干预,否则编译不通过?
检查异常都是继承自 Exception类
2. 运行时异常
不是非得人为干预
都是继承自 RuntimeException类
Java异常类
处理异常的方式:
1.try catch finally
注意: try 必须出现catch和finally可以
都出现 可以出现一个 但不能都不出现
catch可以出现多个
2.throws
try 和 catch 块 2-2
public class ArithmeticException {
/** 构造方法. */
public ArithmeticException() {
}
public static void main(String[] args) {
ExceptionRaised obj = new ExceptionRaised();
try {
/* 定义变量 result 以存储结果. */
int result = obj.calculate(9, 0);
System.out.println(result);
}catch (Exception e) {
System.err.println(“发生异常:" + e.toString());
e.printStackTrace();
}
}
}
class ExceptionRaised {
/** 构造方法. */
public ExceptionRaised() {
}
/**
* 这个方法运行时将会产生一个异常.
* @param operand1 除法中的分子
* @param operand2 除法中的分母
* @return int 返回除法的结果
*/
public int calculate(int operand1, int operand2) {
int result = operand1 / operand2;
return result;
}
}
异常处理块的一般形式
try{
// 要监控错误的代码块
methodGeneratingException();
} catch (Exception e) {
// Exception e 的异常处理程序
} finally{
// 在 try 结束前要执行的代码块
cleanup();
}
多重 catch 块3-1
一段代码可能会生成多个异常
当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个类型与异常类型匹配的语句
执行其中的一条 catch 语句之后,其他的 catch 语句将被忽略
try{
…….
} catch(ArrayIndexOutOfBoundsException e) {
……
} catch(Exception e) {
……
}
多重 catch 块3-2
使用多重 catch 语句时,异常子类一定要位于异常父类之前
用户自定义异常 2-1
自定义异常概念
使用自定义异常的时候
JavaAPI提供的内置异常不一定总能捕获程序中发生的所有错误。有时会需要创建用户自定义异常
自定义异常需要继承Exception 及其子类
用户自定义异常 2-2
创建用户自定义异常
继承 Exception 或其子类
class ArraySizeException extends NegativeArraySizeException {
/** 构造方法。 */
ArraySizeException() {
super(“您传递的数组大小非法");
}
}
class UserDefinedExceptions {
/** 构造方法. */
protected UserDefinedExceptions() {
}
/**
* 类和应用程序的唯一入口点.
* @param arg 字符串参数的数组
*/
public static void main(String[] arg) {
ExceptionClass obj = new ExceptionClass(Integer.parseInt(arg[0]));
}
}
class ExceptionClass {
ExceptionClass(int val) {
size = val;
try {
checkSize();
} catch (ArraySizeException e) {
System.out.println(e);
}
}
/** 声明变量以存储数组的大小和元素. */
private int size;
private int[] array;
/** 检查数组长度的方法.
* @ throws 一个 ArraySizeException
*/
public void checkSize() throws ArraySizeException {
if (size < 0) {
throw new ArraySizeException();
}
array = new int[3];
for (int count = 0; count < 3; count++) {
array[count] = count + 1;
}
}
}
Myeclipse断点调试
在你觉得有错的地方设置断点 。
切换到DEBUG模式下。
运行程序,当程序运行到刚才设置断点的位置就会停下来,并且那行代码底色会高亮显示。、
接着你在如下界面你可以看到你想要的信息
在Variables里面可以查看所有变量的值,比如刚才设置的断点里面的strClassName的值就可以看到。
下面按钮第一个是进入方法执行,比如你调用了其他方法,可以进入方法一步一步执行,如果点击第二个按钮,只会在本方法内一步一步执行,第三个按钮时你跳出此方法,继续执行调用这个方法的原方法。
总结
异常是运行时发生的错误
可以使用 try、catch、throw、throws 和 finally 来管理 Java 异常处理。要监控的程序语句包含在 try 块内catch 块中的代码用于捕获和处理异常。在方法返回之前绝对必须执行的代码应放置在 finally 块中
要手动引发异常,使用关键字 throw。任何被抛到方法外部的异常都必须用 throws 子句指定
自定义异常的编写和使用
异常的调试
异常分为:
1. 检查异常
必须人为干预,否则编译不通过?
检查异常都是继承自 Exception类
2. 运行时异常
不是非得人为干预
都是继承自 RuntimeException类
Java异常类
处理异常的方式:
1.try catch finally
注意: try 必须出现catch和finally可以
都出现 可以出现一个 但不能都不出现
catch可以出现多个
2.throws
try 和 catch 块 2-2
public class ArithmeticException {
/** 构造方法. */
public ArithmeticException() {
}
public static void main(String[] args) {
ExceptionRaised obj = new ExceptionRaised();
try {
/* 定义变量 result 以存储结果. */
int result = obj.calculate(9, 0);
System.out.println(result);
}catch (Exception e) {
System.err.println(“发生异常:" + e.toString());
e.printStackTrace();
}
}
}
class ExceptionRaised {
/** 构造方法. */
public ExceptionRaised() {
}
/**
* 这个方法运行时将会产生一个异常.
* @param operand1 除法中的分子
* @param operand2 除法中的分母
* @return int 返回除法的结果
*/
public int calculate(int operand1, int operand2) {
int result = operand1 / operand2;
return result;
}
}
异常处理块的一般形式
try{
// 要监控错误的代码块
methodGeneratingException();
} catch (Exception e) {
// Exception e 的异常处理程序
} finally{
// 在 try 结束前要执行的代码块
cleanup();
}
多重 catch 块3-1
一段代码可能会生成多个异常
当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个类型与异常类型匹配的语句
执行其中的一条 catch 语句之后,其他的 catch 语句将被忽略
try{
…….
} catch(ArrayIndexOutOfBoundsException e) {
……
} catch(Exception e) {
……
}
多重 catch 块3-2
使用多重 catch 语句时,异常子类一定要位于异常父类之前
用户自定义异常 2-1
自定义异常概念
使用自定义异常的时候
JavaAPI提供的内置异常不一定总能捕获程序中发生的所有错误。有时会需要创建用户自定义异常
自定义异常需要继承Exception 及其子类
用户自定义异常 2-2
创建用户自定义异常
继承 Exception 或其子类
class ArraySizeException extends NegativeArraySizeException {
/** 构造方法。 */
ArraySizeException() {
super(“您传递的数组大小非法");
}
}
class UserDefinedExceptions {
/** 构造方法. */
protected UserDefinedExceptions() {
}
/**
* 类和应用程序的唯一入口点.
* @param arg 字符串参数的数组
*/
public static void main(String[] arg) {
ExceptionClass obj = new ExceptionClass(Integer.parseInt(arg[0]));
}
}
class ExceptionClass {
ExceptionClass(int val) {
size = val;
try {
checkSize();
} catch (ArraySizeException e) {
System.out.println(e);
}
}
/** 声明变量以存储数组的大小和元素. */
private int size;
private int[] array;
/** 检查数组长度的方法.
* @ throws 一个 ArraySizeException
*/
public void checkSize() throws ArraySizeException {
if (size < 0) {
throw new ArraySizeException();
}
array = new int[3];
for (int count = 0; count < 3; count++) {
array[count] = count + 1;
}
}
}
Myeclipse断点调试
在你觉得有错的地方设置断点 。
切换到DEBUG模式下。
运行程序,当程序运行到刚才设置断点的位置就会停下来,并且那行代码底色会高亮显示。、
接着你在如下界面你可以看到你想要的信息
在Variables里面可以查看所有变量的值,比如刚才设置的断点里面的strClassName的值就可以看到。
下面按钮第一个是进入方法执行,比如你调用了其他方法,可以进入方法一步一步执行,如果点击第二个按钮,只会在本方法内一步一步执行,第三个按钮时你跳出此方法,继续执行调用这个方法的原方法。
总结
异常是运行时发生的错误
可以使用 try、catch、throw、throws 和 finally 来管理 Java 异常处理。要监控的程序语句包含在 try 块内catch 块中的代码用于捕获和处理异常。在方法返回之前绝对必须执行的代码应放置在 finally 块中
要手动引发异常,使用关键字 throw。任何被抛到方法外部的异常都必须用 throws 子句指定
自定义异常的编写和使用
异常的调试
相关文章推荐
- 【安博培训技术】Java3 集合、泛型 20130919
- java技术之RMI+odbc中环境搭建主要步骤及异常处理
- Java高级技术第一章——你不知道的Java异常处理
- JAVA之IO技术异常处理机制
- 【安博培训技术】Java1 Java面向对象20130918
- 【技术】Java入门:详解Java异常处理中throw与throws关键字的用法区别
- 【安博培训技术】Java5 IO流 20130920
- 博为峰Java技术题 ——JavaEE Servlet 处理日期Ⅱ
- Java中的异常处理机制
- Java 处理 XML 的三种主流技术及介绍
- Java Exception——Java中的异常处理流程
- 有效处理 Java 异常三原则
- (24) 深入理解java异常处理机制
- Java 中的异常和处理详解
- Java异常处理,学习留档
- Java异常处理
- Java中处理异常中return关键字
- 浅析Java程序异常处理的特殊情况
- Java程序员从笨鸟到菜鸟之(十二)java异常处理机制
- Java如何进行异常处理