zoukankan      html  css  js  c++  java
  • Java常用的输出调试技巧

    --------siwuxie095

       

       

       

       

    Eclipse 开发中常用的输出调试技巧:

       

    先在左侧的 Package Explorer,右键->New->Java Projects,

    命名为 Debug,其他参数默认

       

       

       

       

    点击 Finish,在 src 上,右键->New->Package,命名为 control

    〔编程时最好将每一个类都创建一个包,即便是很简单的包名,这是一个好习惯〕

       

       

       

       

       

    点击 Finish,自动生成了一个 package-info.java,可以删掉

       

       

       

       

       

    在 control 上,右键->New->class,命名为 DebugTest,

    勾选上 public static void main(String[] args),自动创建

    一个主方法,点击 Finish 完成

       

       

       

       

    最常用的输出 System.out.println();

    可以使用快捷键 syso,输入 syso回车即可

    〔会出提示〕

       

       

       

       

    这个输出函数支持的类型非常多,如:字符串、数字、布尔甚至是很多看起来

    不可思议的对象类型

       

    package control;

       

    import javax.swing.JFrame;

       

    public class DebugTest {

       

    public static void main(String[] args) {

    System.out.println(123456);

    System.out.println(true);

    System.out.println("this is string debug info");

     

    //输出一个窗体 这里的 println() 可以接收任何的类型 传入值是一个 Object

    // 只要是一个对象,就可以将它输出

    //这里所有的对象都是调用它的 toString() 方法

    //输出:JFrame() 的默认的 toString() 方法

    System.out.println(new JFrame());

    }

       

    }

       

       

    Eclipse中:

       

       

       

    println() 也可以接收传入值为 Object 的任何类型

       

       

       

    运行一览:

       

       

       

       

    如果将 JFrame() 复写一下,复写其 toString() 方法:

       

    package control;

       

    import javax.swing.JFrame;

       

    public class DebugTest {

       

    public static void main(String[] args) {

    System.out.println(123456);

    System.out.println(true);

    System.out.println("this is string debug info");

     

    //输出一个窗体 这里的 println() 可以接收任何的类型 传入值是一个 Object

    // 只要是一个对象,就可以将它输出

    //这里所有的对象都是调用它的 toString() 方法

    //输出:JFrame() 的默认的 toString() 方法

    System.out.println(new JFrame(){

    @Override

    public String toString() {

     

    return "This is a JFrame";

    }

    });

    }

    }

       

       

    Eclipse中:

       

       

       

    运行一览:输出自定义 toString() 方法给出的返回值

       

       

       

       

    在实际应用中,需要使用不同颜色对输出信息进行区分

    黑色:System.out.println();

    『快捷键:syso

    红色:System.err.println();

    『快捷键:syse / syser / syserr

    〔err 即 错误,一般用于输出错误信息〕

       

       

       

       

       

       

    再如:

       

    package control;

       

       

       

    public class DebugTest {

       

    public static void main(String[] args) {

    //新建一个数组 ints,容量为 5

    int[] ints=new int[5];

    //for循环 ints 数组逐个赋值

    for (int i = 0; i < ints.length; i++) {

    ints[i]=i+1;

    //输出 i+1

    System.out.println(i+1);

    }

    }

    }

       

       

    Eclipse中:

       

       

       

    运行一览:

       

       

       

       

    如果程序中出现错误,如:上面的循环次数是根据 ints.length 来判断,

    如果强制改为 6,数组在访问时就会抛出数组越界异常,使用 Try/catch

    Block 包裹整个 for循环

    〔选中整个 for循环,右键->Surround With->Try/catch Block〕

       

       

    代码:

       

    package control;

       

       

       

    public class DebugTest {

       

    public static void main(String[] args) {

    //新建一个数组 ints,容量为 5

    int[] ints=new int[5];

     

    try {

    //for循环 ints 数组逐个赋值

    for (int i = 0; i < 6; i++) {

    ints[i]=i+1;

    //输出 i+1

    System.out.println(i+1);

    }

    } catch (Exception e) {

    //e.printStackTrace();

     

    //已知错误为 数组越界,直接表明

    System.err.println("数组越界!");

    }

    }

    }

       

    运行一览:

    (注意:这里应用了配色方案,所以颜色不是纯正的黑色和红色,

    但也能区分出不同)

       

       

       

       

       

    调试非常重要的一个技巧就是 下断点

       

    如:需要让程序每次输出 i+1 前都暂停,可以在 System.out.println(i+1);

    对应的行号上,双击(取消断点,再在对应行号上双击即可)

       

       

       

    接下来运行时就是调试,而不是直接运行了,点击 调试 按钮

    进入 调试模式,点击 Yes 即可

    〔调试 Debug 快捷键:F11,运行 Run 快捷键:Ctrl+F11〕

       

    (Debug 按钮 的右边是 Run)

       

       

       

       

       

    进入调试模式:每次暂停后,都点击 Resume 按钮继续运行,或使用快捷键 F8

       

       

       

       

       

    调试完毕,点击右上角的 Java 按钮,切换回 Java工作空间

    (Java 按钮 的右边是 Debug)

       

       

       

       

    如果取消掉 catch 中 e.printStackTrace(); 前面的注释:

    〔其实这是默认生成的一行代码,即 在控制台(或命令行)中打印出所有的错误追踪信息〕

       

    package control;

       

       

       

    public class DebugTest {

       

    public static void main(String[] args) {

    //新建一个数组 ints,容量为 5

    int[] ints=new int[5];

     

    try {

    //for循环 ints 数组逐个赋值

    for (int i = 0; i < 6; i++) {

    ints[i]=i+1;

    //输出 i+1

    System.out.println(i+1);

    }

    } catch (Exception e) {

    //默认生成的一行代码

    //可以在控制台(或命令行)打印出所有的错误追踪信息

    e.printStackTrace();

     

    //已知错误为 数组越界,直接表明

    System.err.println("数组越界!");

    }

    }

    }

       

       

    运行一览:

    输出信息为 ArrayIndexOutOfBoundsException,即数组越界异常

    最大值是 5,错误行数:14

       

       

       

    所以 Try/catch Block 中,自动生成的 e.printStackTrace(); 可以在程序出错时

    打印错误追踪列表,据此,就能追踪到最终错误的来源和错误的类型

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    VIE模式和IP
    背景色改为豆绿色
    Semantic Logging
    mysql 安装配置相关
    高德API相关
    vmware workstation 虚拟机安装vwmare tools
    sql server2012光盘中有management studio,安装时选择客户端。
    zz微软企业库
    zz flag attribute for enum
    zz 还要用存储过程吗
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6464209.html
Copyright © 2011-2022 走看看