
异常介绍
异常类分两大类型:Error类代表了编译和系统的错误,不允许捕获;Exception类代表了标准Java库方法所激发的异常。Exception类还包含运行异常类Runtime_Exception和非运行异常类Non_RuntimeException这两个直接的子类。
异常理解
对于异常是java提供的一直特殊机制,目的是为了程序员更好的对程序进行优化,而在异常的实际开发时,对于新手来说又非常有难度,对于深层次的异常类之间的关系需要在开发中不断的了解
异常的处理方法在代码中都有介绍
package Absttact.com.java.Exception;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Exceptiontest05 {
public static void main(String [] agrs) {
m1();
}
public static void m1() {
System.out.println("m1 bagin");
try {
m2();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
System.out.println("Not Found this text");
}
System.out.println("m1 end");
}
public static void m2() throws FileNotFoundException {
System.out.println("m2 bagin");
m3();
//m3()方法将FileNotFoundException错误抛出
//m2()方法的调用者将FileNotFoundException错误处理和抛出系统才不会报错
System.out.println("m2 end");
}
public static void m3() throws FileNotFoundException {
new FileInputStream("D:\学习笔记\java\ws.txt");
}
}
异常的自定义
package Absttact.com.java.Exception;
//自定义异常
//在实际开发中有很多sun公司没有提供的异常
public class Exceptiontest11 {
public static void main(String [] agrs) {
//异常的使用
Myexceptiontest sc= new Myexceptiontest("用户名不可以是空");
//打印异常信息
sc.printStackTrace();
MyException sd =new MyException("登录密码或密码格式错误");
sd.printStackTrace();
}
}
//异常自定义
//第一步创建一个类继承Exception或者RuntimeException
//第二步提供两个构造方法,一个有参一个无参
class Myexceptiontest extends Exception {
//编译是异常
Myexceptiontest (){
}
Myexceptiontest ( String obj){
super(obj);
}
}
class MyException extends RuntimeException {
//运行是异常
MyException(){
}
MyException(String s){
super(s);
}
}
异常的练习使用
package 数组与数据结构; import java.util.Scanner; //一维数组模拟栈结构 public class Mystack { // 创建一维数组 // Object可以存放任何数据类型的数据 private Object[] array; //栈顶,初始值为0 private int index=0; public Object[] getArray() { return array; } public void setArray(Object[] array) { this.array = array; } //利用构造函数初始化对象 public Mystack( ) { //默认输入10 System.out.println("输入数组初始化长度:"); Scanner sc= new Scanner(System.in); int a= sc.nextInt(); this.array=new Object[a]; System.out.println("输入数组初始化成功:"); } //压栈 public void push(Object obj) throws MystackOperationException { if(this.index>=this.array.length) { throw new MystackOperationException("栈满,压栈失败"); } this.array[index]=obj; System.out.println("压栈成功!栈顶指向"+this.index); this.index ++; } //出站 public void pop( Object obj) throws MystackOperationException { if(this.index<=0) { throw new MystackOperationException("栈空,出栈失败"); } this.index --; System.out.println("出栈成功!栈顶指向"+this.index +"栈元素是"+this.array[index]); this.array[index]=obj; } public static void main(String [] agrs) { Mystack a= new Mystack(); try { a.push(new Object()); a.push(new Object()); a.push(new Object()); a.push(new Object()); a.push(new Object()); } catch (MystackOperationException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } try { a.pop(new Object()); a.pop(new Object()); a.pop(new Object()); a.pop(new Object()); a.pop(new Object()); } catch (MystackOperationException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } class MystackOperationException extends Exception{ MystackOperationException(){ } MystackOperationException( String s){ super(s); } }
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)