English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Come includere la data corrente quando si registrano eccezioni con FileOutputStream in Java?

Ci sono diversi framework di logging che possono essere utilizzati per registrare dati nei file. Puoi anche definire i tuoi metodi. In qualsiasi caso, per aggiungere l'ora corrente alle eccezioni registrate, puoi utilizzareLocalDateTimeclasse.

È una classe immutabile che rappresenta la data e l'ora, e memorizza la data e l'ora comeanno-mese-giorno-ora-minuto-secondo.now()Il metodo di questa classe restituisce la data e l'ora corrente.

Utilizzare questo metodo per connettere la data e l'ora corrente al messaggio di eccezione e scriverlo nel file desiderato.

Esempio

import java.io.FileOutputStream;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Scanner;
public class LoggingToFile {
   private static void writeLogToFile(Exception e) throws IOException {
      FileOutputStream writer = new FileOutputStream("ExceptionLog.txt");
      byte bytes[] = (LocalDateTime.now()+": "+e.toString()).getBytes();
      writer.write(bytes);
      System.out.println("Exception logged to your file");
   }
   public static void main(String[] args) throws IOException {
      Scanner sc = new Scanner(System.in);
      int[] arr = {10, 20, 30, 2, 0, 8};
      System.out.println("Array: " + Arrays.toString(arr));
      System.out.println("Scegli il numeratore e il denominatore (non 0) da questo array (inserisci posizioni da 0 a 5)");
      int a = sc.nextInt();
      int b = sc.nextInt();
      try {
         int result = (arr[a]) / (arr[b]);
         System.out.println("Risultato di " + arr[a] + "/" + arr[b] + ": " + result);
      }catch(ArrayIndexOutOfBoundsException ex) {
         System.out.println("Attenzione: Hai scelto una posizione che non è nell'array");
         writeLogToFile(ex);
      }catch(ArithmeticException ex) {
         System.out.println("Attenzione: Non puoi dividere un numero per 0");
         writeLogToFile(ex);
      }
   }
}

Risultato di output

Inserisci tre valori interi uno per uno:
Array: [10, 20, 30, 2, 0, 8]
Scegli il numeratore e il denominatore (non 0) da questo array (inserisci posizioni da 0 a 5)
1
4
Attenzione: Non puoi dividere un numero per 0
Eccezione registrata nel file