黑马程序员技术交流社区
标题:
关于throw和throws的问题
[打印本页]
作者:
谢威
时间:
2013-4-1 15:17
标题:
关于throw和throws的问题
请问throw和throws的区别是什么?什么时候用它们,举例说明。
作者:
张玉保
时间:
2013-4-1 15:34
throw定义在函数内,用于抛出异常对象
throws定义在函数上,用于抛出异常类,可抛出多个,异常类之间用逗号
class MyException extends Exception
{
}
class Demo
{
// 假如此函数运行时有异常
public void method()throws MyException//throws 用在函数上抛出的是类MyException
{
throw new MyException();//throw用在method函数内,抛出的是对象new MyException()。
}
}
复制代码
作者:
绿树林
时间:
2013-4-1 15:37
throws是用来声明一个方法可能抛出的所有异常信息
throw则是指抛出的一个具体的异常类型。
通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;
throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。
public ArrayList getList() throws Exception //throws是用来声明抛出什么异常的
{
try
{
ArrayList result = new ArrayList();
return result;
} catch (Exception e)
{
throw new Exception(e); //throw是用来抛出异常的
}
}
throws是声明,throw 是动作
作者:
袁梦希
时间:
2013-4-1 16:02
Throwable:可抛出的。
|--Error:错误,一般情况下,不编写针对性的代码进行处理,通常是jvm发生的,需要对程序进行修正。
|--Exception:异常,可以有针对性的处理方式
无论是错误还是异常,它们都有具体的子类体现每一个问题,它们的子类都有一个共性,就是都以父类名才作为子类的后缀名。
这个体系中的所有类和对象都具备一个独有的特点;就是可抛性。
可抛性的体现:就是这个体系中的类活对象都可以分别被throws或throw两个关键字所操作。
作者:
HM李超
时间:
2013-4-1 16:39
throw和throws的用法区别:
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个异常类用逗号隔开。
throw和throws用法示例,用于自定义异常;
需求:在本程序中,对于除数是负数,也视为是错误的是无法进行运算的。那么就需要对这个问题进行自定义的描述(描述出错信息和给出出错的数值)。
class FuShuException extends Exception
{
private int value; //记录出错的值
FuShuException(String msg,int value) //自定义异常信息
{
super(msg); //继承父类的构造函数,重写
this.value = value;
}
public int getValue()
{
return this.value;
}
}
class Demo
{
int div(int a , int b)throws FuShuException //FuShuException继承于Exception类,必须显式抛出给调用该方法的函数,这里是主函数
{
if(b < 0)
throw new FuShuException("出现了除数是负数的情况.../by fushu",b); //手动通过throw关键字抛出一个自定义异常对象
return a/b;
}
}
class ExceptionDemo2
{
public static void main(String[] args)
{
Demo d = new Demo();
//捕获并处理异常
try
{
int x = d.div(4,-1);
System.out.println("x="+x);
}
catch (FuShuException e)
{
System.out.println(e.toString());
System.out.println("出错的除数值是:"+e.getValue());
}
System.out.println("over!");
}
}
复制代码
请看毕老师的第9天和第10天的视频,讲的很明白
作者:
程媛媛
时间:
2013-4-1 16:40
throws:用来声明一个方法可能抛出的所有异常,使用在函数上,后面跟的是异常类,可以有多个,用逗号隔开;
throw:抛出的是一个具体的类型;使用在函数内,后面跟的是异常对象;
class Demo1{
public static void show()throws ArrayIndexOutOfBoundsException{//抛出一个一个异常类。
try{
int[] arr = {2,4,6,1,3,5,9,8};
System.out.println(arr[10]);
}catch(Exception e){
throw new RuntimeException("数组角标越界");//抛出的一个异常对象。
}
}
public static void main(String[] args) {
show();
}
}
作者:
xyh19
时间:
2013-4-1 17:13
throw语句用来明确地抛出一个 “异常”。(
定义在函数内
,用于抛出异常对象。)
throws用来标明一个成员函数可能抛出的各种“异常”。(
定义在函数上
,用于抛出异常类,可以抛出多个异常类用逗号隔开。)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2