public class ThrowAndThrows {
public void method(int i){
try{
if(i<0){
throw new MyException();}} catch(MyException e1){
e1.myException();} finally{
System.out.println("无论正常执行还是抛出异常均执行的代码块");}return;}}
class MyException extends Exception{
public MyException(){
super();}
public MyException(String s){
super(s);}
public void myException(){
System.out.println("输入的数字小于0");}}
在方法上抛出自定义异常(throws)
public class ThrowAndThrows {
public static void method(int i) throws MyException {
if(i<0){
throw new MyException();}}
public static void main(String[] args){
int i =0;
try{
method(i);}catch(MyException e){
e.myException();}catch (NullPointerException e){
System.out.println("更高一级异常");}finally {
System.out.println("无论正常执行还是抛出异常均执行的代码块");}}}
class MyException extends Exception{
public MyException(){
super();}
public MyException(String s){
super(s);}
public void myException(){
System.out.println("输入的数字小于0");}}
详细代码:
public class ThrowAndThrows {
public void method(){
try{
int i =1/0;//发生异常立即跳往catch语句中执行,不执行异常代码下面的代码
System.out.println("输出结果为:" + i);}catch(ArithmeticException e){
e.printStackTrace();
System.out.println("编译报错,除数不能为0");}finally {
System.out.println("无论正常执行还是抛出异常均执行的代码块");}return;}}
详细代码:
public class ThrowAndThrows {
public void method(){
try{
int i =1/0;//发生异常立即跳往catch语句中执行,不执行异常代码下面的代码
System.out.println("输出结果为:" + i);}catch(ArithmeticException e){
e.printStackTrace();
System.out.println("编译报错,除数不能为0");}catch (Exception e){
e.printStackTrace();}finally {
System.out.println("无论正常执行还是抛出异常均执行的代码块");}return;}}