异常一种是try-catch还有一种就是函数后面直接跟个throws声明抛出异常public class MinusAgeException extends Throwable {
 public MinusAgeException(){}
    public MinusAgeException(int age) {
     if(age<0) System.out.println("年龄为负数!错误!");
}
}这个自己写的年龄为负数就抛出异常的类 如果我函数后面比如public void f()throws MinusAgeException{....}
这样声明函数可能抛出异常我就不能给参数了,是不是如果要给构造器参数只能用try-catch?这样我catch里面可以用有参构造器new一个对象

解决方案 »

  1.   

    完全没懂你要干嘛,你这样只是表明这个方法可能会有MinusAgeException这个异常抛出,至于什么地方抛出那就看你内部代码了,比如:
    public void f()throws MinusAgeException{
        new MinusAgeException(-1);//这样就有一个异常抛出了
    }
      

  2.   


    恩恩 理解了 原本上理解有点错误 那么如果采用try-catch这种方法 要在catch里面处理的时候抛出异常是这么写么:
    try{
        ....   
    }catch(MinusAgeException e){
       ...
    }然后这里我就有个疑问了catch里面如果写e=new MinusAgeException (age);好像就报错了哎
      

  3.   

    我想楼主大概没明白throw和throws的区别,throw是在代码中抛出一个异常,例如:throw new Exception("An Error accident....");throws XXXException的意思是声明本方法可能会抛出一个异常,具体在哪抛,是要看楼主在哪写throw语句了。
      

  4.   

    看看下面的代码,你肯定有地方写错了:public class Test extends Throwable { public static void main(String[] args){
    try {
    throw new MinusAgeException();//需要有异常抛出,才能catch
    } catch (MinusAgeException e) {
    e = new MinusAgeException(-1);
    e.printStackTrace();
    }
    }
    }class MinusAgeException extends Throwable {
    public MinusAgeException() {
    } public MinusAgeException(int age) {
    if (age < 0)
    System.out.println("年龄为负数!错误!");
    }
    }
      

  5.   

    catch里不能写可能出现错误的句子,try中要出现错程序就中断,抛出异常也就是catch中的提示
      

  6.   

    public void a() throws MyException{
    throw new MyException();//这是我自己写的异常类,继承了
    //Exception,不是运行时异常,
    //所以必须在方法声明中声明抛出异常
    }

    public void b(){
    throw new MyRuntimeException();//这是一个运行时异常,不用在方法声明中声明
    }

    public void c(){
    try{
    throw new MyException("抛出一个异常");//非运行时异常如果不在方法声明中声明,
    //则必须用try..catch进行捕捉
    }catch(MyException e){
    System.out.println("An error accident....");
    }
    }

    public void d(){
    try{
    throw new MyRuntimeException("抛出一个运行时异常");//运行时异常可以捕捉,也可以不捕捉
    }catch(MyRuntimeException e){
    System.out.println("An error accident......");
    }
    }

    public void e() throws MyException{
    try{
    throw new Exception("抛出一个异常");
    }catch(Exception e){
    System.out.println("记录日志");//这是一个在实际项目中的常用方法,即捕捉所有异常,
    throw new MyException(e);//然后将其包装在项目自己写的异常类中抛出。这么做的作用是为了方便记录日志,统一管理
    }
    }