Resumen: Intellij IDEA usa Debug para encontrar la causa del error

1. Comprender el funcionamiento básico de depuración

Inserte la descripción de la imagen aquí
1. Mostrar punto de ejecución (Alt + F10): si su cursor está en otra línea u otra página, haga clic en este botón para saltar a la línea donde se ejecuta el código actual.
2. Paso arriba (F8): Pase, vaya línea por línea, si hay un método en esta línea, no entrará en el método.
3. Paso a paso (F7): si hay un método en la línea actual, puede ingresar el método, generalmente utilizado para ingresar el método personalizado, no ingresará el método de la biblioteca oficial de la clase
4. Forzar paso a paso (Alt + Shift + F7) ): Entrada forzada, puede ingresar cualquier método, generalmente verifique el código fuente para usar este
5. Salir (Shift + F8): Salir, salir del método de entrada a la llamada al método, el método se ha ejecutado en este momento, pero solo La tarea no ha sido completada.
6. Drop Frame (no predeterminado): Volver al punto de interrupción
7. Ejecutar a cursor (Alt + F9): ejecutar al cursor, puede colocar el cursor en la línea que necesita ver, y luego usar esta función, el código se ejecutará en Líneas de cursor sin puntos de ruptura.
8. Evaluar expresión (Alt + F8): evalúa la expresión, puedes calcular el valor de la expresión seleccionada

Inserte la descripción de la imagen aquí
1. Vuelva a ejecutar 'xxxx' (Ctrl + F5): (como Rerun 'Tomcat8.5.24') vuelva a ejecutar el programa, cerrará el servicio y reiniciará el programa.
2.Actualice la aplicación 'xxxx' (Ctrl + F10): actualice el programa. Generalmente, esta función se puede ejecutar después de cambiar su código.
3. Reanudar programa (F9): Reanude el programa, si hay un punto de interrupción debajo del punto de interrupción, presione F9 para saltar directamente al siguiente punto de interrupción; de lo contrario, ejecute todo el programa directamente.
4. Pausar el programa: pause el programa y habilite la depuración.
5. Detener 'xxx' (Ctrl + F2): presione dos veces seguidas para cerrar el programa. A veces, encontrará que cuando apaga el servicio y comienza de nuevo, el puerto está ocupado. Esto se debe a que el servicio no se apaga por completo y necesita eliminar todos los procesos de JVM.
6. Ver puntos de interrupción (Ctrl + Shift + F8): Ver todos los puntos de interrupción.
7. Silenciar puntos de interrupción: puntos de interrupción no válidos. Después de seleccionar esto, todos los puntos de interrupción se volverán grises y los puntos de interrupción no serán válidos. Presione F9 para ejecutar el programa directamente. Haga clic de nuevo y el punto de interrupción se vuelve rojo, válido. Si solo desea deshabilitar un cierto punto de interrupción, puede hacer clic con el botón derecho en el punto de interrupción para cancelar Habilitado.

2. A través de un ejemplo, use Debug para encontrar la causa
del error. El siguiente es el código donde existe el error:

import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class DataUtils {
    public static <T> List<T> getAll(Class<T> cla, ResultSet resultSet) {
        List<T> list = new ArrayList<>();

        try {
            //while循环遍历每一行数据
            while (resultSet.next()) {
                //生成一个实例,数据的一行对应着一个数据
                T t = cla.newInstance();
                //返回字段信息
                ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
                //获取列的数量
                int colums = resultSetMetaData.getColumnCount();
                //取出每一列的字段名
                for (int i = 1; i <= colums; i++) {
                    //获取字段别名
                    String lable = resultSetMetaData.getColumnLabel(i);
                    //取出每列对应的数据
                    Object obj = resultSet.getObject(i);
                    //获取属性的类型
                    Class<?> filedType = cla.getField(lable).getType();
                    //获取方法名
                    String setMethodName = "set" + lable.substring(0, 1).toUpperCase() + lable.substring(1);
                    //获取set方法
                    Method setMethod = cla.getMethod(setMethodName, filedType);
                    //给对应的属性设置值
                    setMethod.invoke(t, obj);
                }
                list.add(t);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }
}

La causa del error: la
Inserte la descripción de la imagen aquí
ubicación del error:
Inserte la descripción de la imagen aquí
use Evaluar expresión (Alt + F8) para calcular el valor de la expresión seleccionada y encontrar que el valor no se encuentra, por lo que el error está en el paso de obtener el atributo
Inserte la descripción de la imagen aquí
y luego corregirlo. Después de que el programa pueda ejecutar el resultado, mire el cálculo El valor es productivo.
Inserte la descripción de la imagen aquí

Publicado 6 artículos originales · me gusta 0 · visitas 85

Supongo que te gusta

Origin blog.csdn.net/ShaoWeiY/article/details/105543126
Recomendado
Clasificación