新手关于异常类的问题

gooooak 2013-05-24 12:44:20
在一个java程序中如何处理自定义异常和异常类的顺序?
...全文
203 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wandefajin 2013-05-25
  • 打赏
  • 举报
回复
try{ } catch(数组角标越界异常) { } catch(自定义异常){ }
gooooak 2013-05-25
  • 打赏
  • 举报
回复
抱歉,我可能说的不是很清楚。我的意思是,在一个java程序里面,有一个自定义异常和数组角标越界异常,怎样处理它们的位置才能在程序中捕捉到异常?
无鬼丛话 2013-05-25
  • 打赏
  • 举报
回复
自定义异常类,新手就记下一点,用子类去继承exception,定义好后,在调用时用try捕获一下就行,相应的catch处理下,从输出结果就可以看出来的
gooooak 2013-05-25
  • 打赏
  • 举报
回复
class IntegerValueOutOfBoundsException extends Exception { private int value; IntegerValueOutOfBoundsException(String msg,int value) { super(msg); this.value = value; } public int getValue() { return value; } } public class ExceptionDemo { static void array() { Scanner sc = new Scanner(System.in); try { int i = sc.nextInt(); if(i<0 || i>100) throw new IntegerValueOutOfBoundsException("整数取值越界:",i); } catch(IntegerValueOutOfBoundsException e) { System.out.println(e); } } public static void main(String args[]) throws IOException{ System.out.println("请输入数组中的元素:"); Scanner sc = new Scanner(System.in); int arr[] = new int[10]; try { array(); for(int x=0;x<10;x++) { arr[x] = sc.nextInt(); } System.out.print("["); for(int i=0;i<arr.length;i++) { if(i!=arr.length-1) System.out.print(arr[i]+", "); else System.out.println(arr[i]+"]"); } } catch(ArrayIndexOutOfBoundsException e) { System.out.println(e.toString()); System.out.println("数组角标越界啦!"); } } } 这样写可以吗?
wandefajin 2013-05-24
  • 打赏
  • 举报
回复
可以throw 也可以try catch 但是catch的顺序要先子类异常 后父类异常!!!!
xianwangkai 2013-05-24
  • 打赏
  • 举报
回复
原则是向上抛!
gooooak 2013-05-24
  • 打赏
  • 举报
回复
多谢各位啦!
地下室森林 2013-05-24
  • 打赏
  • 举报
回复
catch异常的顺序是先小再大 自定义异常类MyException
package csdn.programbbs_524;

@SuppressWarnings("serial")
public class MyException extends Exception{
	public MyException() {}
	public MyException(String message) {
		super(message);
	}

	@Override
	public String toString() {
		return "出现自定义的MyException";
	}
}
TestMyException 测试类
package csdn.programbbs_524;

import java.util.Scanner;

public class TestMyException {
	public static void main(String[] args) {
		Scanner i = new Scanner(System.in);
		int a = i.nextInt();
		try {
			if (a == 1)
				throw new MyException();
			else
				throw new Exception();
		} catch (MyException e) {
			System.err.println("自定义异常");
		} catch (Exception e) {
			System.err.println("系统异常");
		}

	}
}
cyp798752401 2013-05-24
  • 打赏
  • 举报
回复
一、第一种定义方式,继承Exception类 public class MyFirstException extends Exception { public MyFirstException() { super(); } public MyFirstException(String msg) { super(msg); } public MyFirstException(String msg, Throwable cause) { super(msg, cause); } public MyFirstException(Throwable cause) { super(cause); } //自定义异常类的主要作用是区分异常发生的位置,当用户遇到异常时, //根据异常名就可以知道哪里有异常,根据异常提示信息进行修改。 } 二、 第二种定义方式:继承Throwable 类 public class MySecondException extends Throwable { public MySecondException() { super(); } public MySecondException(String msg) { super(msg); } public MySecondException(String msg, Throwable cause) { super(msg, cause); } public MySecondException(Throwable cause) { super(cause); } }
cyp798752401 2013-05-24
  • 打赏
  • 举报
回复
当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用...)时,JAVA就会用异常对象来描述。 JAVA中用2种方法处理异常: 1.在发生异常的地方直接处理; 2.将异常抛给调用者,让调用者处理。 JAVA异常可分为3种: 检查性异常:java.lang.Exception 运行期异常:java.lang.RuntimeException 错误:java.lang.Error 顶层是java.lang.Throwable类,检查性异常,运行期异常,错误都是这个类的子孙类。 java.lang.Exception和java.lang.Error继承自java.lang.Throwable,而java.lang.RuntimeException继承自java.lang.Exception. 检查性异常------程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。JAVA编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。 运行期异常------这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,JAVA编译器强制要求处理这类异常。 错误------一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理。
菖蒲老先生 2013-05-24
  • 打赏
  • 举报
回复
catch呗, 先catch的先处理。。。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧