课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > java中的异常和反射
  • java中的异常和反射

    发布:昆明Java培训      来源:达内新闻      时间:2016-10-07

  • 昆明Java培训机构的老师今天给同学们讲java中异常和反射。

    异常

    异常就是导致程序中断执行的一段指令流.

    在java中,对于异常在API中也有明确的定义,叫做异常类.

    异常分类

    Error : JVM的错误,程序中不进行处理,交给虚拟机.

    Exception :程序中出现的异常,可以在程序中进行处理. Exception又分为编译时异常,运行时异常.

    编译时异常:代码编写完成之后编译无法通过.例如:ParseException(转换异常),ClassCastException类型转换异常

    运行时异常:代码本身没有问题,可以通过编译,运行时候会出现错误.例如: NullPointerException(空指针异常)、ArithmeticException(数学计算异常,0作被除数)、ArrayIndexOutOfBoundsException(数组角标越界异常)

    异常处理

    1.捕获异常:try catch直接处理可能出现的异常

    2.声明异常: throws声明告诉调用中可能的异常,暴露问题,调用者自己处理

    try{ 

    //可能出现异常的代码 

    }catch(Exception1 e1){ 

    //处理的方式1 

    e.printStaticTrace(); 

    }[catch](Exception2 e2{  

    //处理的方式2

    }[finally]{ 

    //一定要执行的代码 

    finally :异常的同意出口,不管程序是否产生异常, finally语句块中的内容一定会被执行.

    throws关键字:用来声明方法,表示此方法不处理异常,而是抛给调用处,谁调用这个方法,谁就去处理这个异常.

    throw关键字:正常情况下,异常是由JVM抛出的,除了这种情况之外,我们还可以通过throw关键字人为的抛出一个异常。

    try,catch,finally结合的几种方式:

    try,catch,finally

    try,catch

    try,finally

    昆明Java培训机构的老师下面给大家讲反射

    简介

    反射机制主要是用来破解类文件的

    正常的文件执行:在源代码已知的情况下,导入类路径,通过new关键字实例化该类对象,通过对象名使用这个类

    反射的文件执行:在源代码未知的情况下,对类文件进行破解,然后再去使用这个类

    要想破解类,就必须要对类进行了解,类其实也是一种类型,对于一个类来讲,应该有属性,普通方法,构造方法.

    java提供了Class类,用来对类本身进行操作,通过Class类可以完整的得到一个类的结构,例如:方法,属性等.

    Class类中的常用方法介绍:

    获取属性相关:

    getDeclaredFields()://获取类自己定义的全部属性

    getFields()://获取类自己定义的和父类继承来的public属性

    获取构造方法:

    getConstructors()://获取公共的构造方法

    getDeclaredConstructors()://获取所有构造方法

    获取一般方法:

    getMethods()://获取自己类和父类的public方法

    getDeclaredMethods()://获取自己类的所有方法

    getName();

    以String的形式返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称。

    getModifiers();

    返回此类或接口以整数编码的Java语言修饰符。

    获取class类的三种方法:

    创建Class对象

    Class类没有构造方法,创建Class对象,有三种方法:

    第一种:Class.forNama("完整包名.类名");      例如:Class.forName("com.weixin.Student");

    第二种:通过对象名.getClass();

    第三种:类名.class

    //第一种方法

    Class<?> clazz = null;

    try {

    clazz = Class.forName("com.weixin.Teacher");

    } catch (ClassNotFoundException e) {

    e.printStackTrace();

    }

    /*//第二种方法

    Class clazz2 = Teacher.class;

    //第三种方法

    Teacher teacher = new Teacher();

    Class clazz3 = teacher.getClass();*/

    //获取属性

    Field[] f = clazz.getDeclaredFields();

    for(Field f1 : f) {

    //获取属性的名字

    System.out.println(f1.getName());

    //获取属性的访问修饰符

    System.out.println(Modifier.toString(f1.getModifiers()));

    //获取属性的数据类型

    System.out.println(f1.getType().getName());

    }

    破解属性

    在API中,提供了表示属性的类Field

    Field类常用方法:

    getName():获取属性名

    getType().getName():获取属性类型

    Modifier.toString((f1.getModifiers()));获取属性修饰符private还是public

    破解方法:

    Method[] m = clazz.getDeclaredMethods();

    for(Method m1:m) {

    System.out.println(Modifier.toString(m1.getModifiers())+" ");

    System.out.println(m1.getName()+" ");

    }

    方法的运行:

    Class<?> clazz = null;

    try {

    clazz = Class.forName("com.weixin.Teacher");

    } catch (ClassNotFoundException e) {           e.printStackTrace();

    }

    Method[] m = clazz.getDeclaredMethods();

    for(Method m1:m) {

    System.out.println(m1);

    }

    了解更多详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:【昆明达内Java培训】JavaEE开发基础

下一篇:【昆明达内Java培训】JavaEE的web part1

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:12/29

Java--零基础业余班

Java--零基础业余班

开班日期:12/29

Java--周末提升班

Java--周末提升班

开班日期:12/29

Java--零基础周末班

Java--零基础周末班

开班日期:12/29

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56