A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小泉真也 中级黑马   /  2014-1-16 11:07  /  1053 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小泉真也 于 2014-1-16 11:26 编辑
  1. throw new Exception("非法运行");
复制代码
Q【1】在这个语句中,抛出一个异常,括号是表示 打印输出“非法运行”的意思吧?
Q【2】它是不是相当于省略了System.out.println("非法运行");?? 还是说   本身 ("  ");   这个就是带有打印输出的含义呢?

6 个回复

倒序浏览
这里是指自己自定义的异常的名字  好比构造函数(String name)的意思
回复 使用道具 举报
public Exception(String message)构造带指定详细消息的新异常,是Exception的其中一个带参构造函数,它里面隐式调用super(msg),是父类Throwable的带参构造函数。建议LZ看看API.
回复 使用道具 举报
而抛异常时,就可以把异常的字符串名字打印出来
回复 使用道具 举报
不是的 你是内部里面包装了一个打印流 PrintWriter里面的一个e.printStackTrace(System.out);
回复 使用道具 举报
本帖最后由 776699 于 2014-1-16 11:59 编辑

Exception 本身有一个构造方法为:Exception(String message)  构造带指定详细消息的新异常。当调用它的时候,内部会自动调用toString();方法,内部调用输出流,打印出其异常信息。
回复 使用道具 举报
本帖最后由 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是对解压包中的类和方法做说明的。你自己看看吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马