黑马程序员技术交流社区
标题:
异常throw new Exception后面的()
[打印本页]
作者:
小泉真也
时间:
2014-1-16 11:07
标题:
异常throw new Exception后面的()
本帖最后由 小泉真也 于 2014-1-16 11:26 编辑
throw new Exception("非法运行");
复制代码
Q【1】在这个语句中,抛出一个异常,括号是表示 打印输出“非法运行”的意思吧?
Q【2】它是不是相当于省略了System.out.println("非法运行");?? 还是说 本身 (" "); 这个就是带有打印输出的含义呢?
作者:
松涛小玮
时间:
2014-1-16 11:19
这里是指自己自定义的异常的名字 好比构造函数(String name)的意思
作者:
黑马不黑
时间:
2014-1-16 11:23
public
Exception(String
message)构造带指定详细消息的新异常,是Exception的其中一个带参构造函数,它里面隐式调用super(msg),是父类Throwable的带参构造函数。建议LZ看看API.
作者:
松涛小玮
时间:
2014-1-16 11:24
而抛异常时,就可以把异常的字符串名字打印出来
作者:
黄晓鑫
时间:
2014-1-16 11:44
不是的 你是内部里面包装了一个打印流 PrintWriter里面的一个e.printStackTrace(System.out);
作者:
776699
时间:
2014-1-16 11:55
本帖最后由 776699 于 2014-1-16 11:59 编辑
Exception 本身有一个构造方法为:Exception(String message) 构造带指定详细消息的新异常。当调用它的时候,内部会自动调用toString();方法,内部调用输出流,打印出其异常信息。
作者:
xiaochen33520
时间:
2014-1-16 12:57
本帖最后由 xiaochen33520 于 2014-1-16 13:09 编辑
关于异常,必须得说继承。异常分为两大类,一个是Error,一个是Exception.
Error不是我们所处理的。而Exception是我们可以处理的。
Exception又分为两大类,一个是编译时检测的异常,一个是在程序运行期间出现的异常。
自定义异常必须继承Exception或者RuntimeException。其实就是将这问题封装成一个类,让这个类继承异常体系,继承以后throws和throw就可以对其异常进行声明与捕捉,声明就是我们所说的抛出。而捕捉就是
try{}catch(){};
你的问题就是关于异常参数的,问题被封装在类中,自然而然类是有构造函数的,你往里面传入参数是调用有参构造函数,如果不传入参数则调用无参构造函数。如果是自定义异常,那么这个类必须继承异常体系,如果想往你们传入异常描述信息,那么必须自定义一个有参的构造函数,因为这个类是继承异常体系的,那么这个类自然而然就有父类,在有参构造函数中调用super(msg),msg是你的异常描述的参数,直接把父类异常的构造函数拿过来用就OK。
关于在控制台打印信息这个问题与你无关,是java自己做的事情,不需要定义的,如果你想自己打印信息就try{}catch(){}吧,在catch代码块中打印自己的异常信息到控制台中。catch(){}类似方法,把异常对象写在catch的圆括号中,比如
try
{
//代码;
}
catch(异常类 变量名)
{
System.out.println(变量名);//自动调用toString();当然也可以写成:变量名.toString(); 这个就可以打印异常信息。
System.out.rpintln(变量名.getMessage());//这个方法也可以打印异常信息。
变量名.printStackTrace();//这个方法也可以打印异常信息。
}
如果你真相做深度了解,建议你看看jdk中的src.zip解压包,和api。解压包是封装的代码类。api是对解压包中的类和方法做说明的。你自己看看吧。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2