java中所有导包都出现异常_java 异常 包

异常:编译时没有错误,运行时出现各种错误。

Error和Exception的区别:

Error:指的是JVM错误,这个时候程序并没有执行,无法处理。

Exception:指的是程序中出现的错误信息,可以进行异常处理。

异常处理流程:

(1)     如果程序中产生了异常,那么会自动地由JVM根据异常的类型实例化一个指定异常类的对象

(2)     如果程序中没有任何异常处理操作,则这个异常的实例化对象将交给JVM进行处理,而JVM的默认处理方式就是进行异常信息的输出,而后中断程序的执行。

(3)     如果程序中存在异常处理,会由try语句捕获产生的异常类对象

(4)     与try之后的每一个catch进行匹配,如果匹配成功,则使用指定的catch进行处理,如果没有匹配成功,则向后面的catch继续匹配,如果没有任何catch匹配成功,将交给JVM执行默认处理

(5)不管是否有异常都会执行finally程序,如果此时没有异常,执行完finally会继续执行程序中的其他代码,如果此时有异常但没有一个catch匹配成功,那么也会执行finally,但是执行完finally后,将默认交给JVM进行异常信息输出,并且程序中断

所有异常都是Exception的子类,那么所有异常都可以用Exception来接收

例:

public class test {

public static void main(String args[]){

System.out.println("1、除法计算开始");

try{

int x=Integer.parseInt(args[0]);

int y=Integer.parseInt(args[1]);

int result=x/y;

System.out.println("2、除法计算结果:"+ result);

}catch(Exception e){

e.printStackTrace();

}finally{

System.out.println("不管是否出现异常都执行");

}

System.out.println("3.除法计算结束");

}

}

throws关键字与throw关键字

throws是用来声明一个方法可能抛出的所有异常信息

throw则是指抛出的一个具体的异常类型。

通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。

throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;

throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。

异常处理的标准格式

try…catch、finally、throws、throw

例:

class MyMath{

public int div(int x,int y)throws Exception{ //出现异常要交给被调用处处理

System.out.println("===计算开始===");

int result=0;

try{

result=x/y; //除法计算

return result;

}catch(Exception e){

throw e; //向上抛

}finally{

System.out.println("===计算结束===");

}

//return result;

}

}

public class test {

public static void main(String args[]){

try{

System.out.println(new MyMath().div(10,0)); //被调用处处理异常

}catch(Exception e){

e.printStackTrace();

}

}

}

问题:try语句中有一个return语句,那么紧跟在try后面的finally语句会不会被执行??什么时候执行,在return前还是后?

finally语句一定会执行,且在return前执行

异常最大的父类是Throwable,它分为两个子类:Exception和Error。Exception表示程序处理的异常,而Error表示JVM错误,一般不由程序开发人员处理。

使用package关键字来定义包,如:package cn.mldn.demo;

一旦包定义完成后,类名称就是:包.类

包的导入

不同包之间一定会存在包的导入问题,导入包在程序中用import完成。

Ø  一个包中的类若想要被其他包中的类使用,那这个类一定要定义为publicclass

Ø  class声明的类只能在同一个包中使用

Ø  在一个*.java文件中,只能存在一个public class定义,且文件名和类名称保持一致

Ø  在一个*.java文件中,可以有多个class定义,文件名称可以和类名称不一致

[1]     Import 包.类;

[2]     Import 包.*;

在java中使用“*”导入类或者是单独导入,从实际的操作性能上来讲是没有任何区别的,因为即使是使用了“*”也表示只导入所需要的类,不需要的不导入。

在导入包时会导入不同包的同名类,所以在实例化对象时一定要使用完整的类名称(包.类)

例:

package cn.mldn.util;

public class Message {

public String getInfo(){

return "hello world!";

}

}

package cn.mldn.test;

import cn.mldn.util.*;

public class Test {

public static void main(String args[]){

Message msg=new Message();

System.out.println(msg.getInfo());

}

}

Java的常用包

Applet和Applacation的区别:

Applet是不需要主方法运行的

Applacation是需要通过主方法执行的

现在所写的代码都应该是Application程序

四种访问权限

²  Private只能在同一包的同一类中访问

²  Default只能在同一个包中访问

²  Protected在不同的子类中可以访问(extends)

²  Public所以都可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值