Łapanie wyjątków

0

Hej,

Mam za zadanie stworzyć program w Javie, który odczyta mi dane zamieszczone w pliku csv i przeniesie je do tabeli.

Niestety jako, że doświadczenia z Javą mam bardzo niewiele, to pojawiają się z tym pierwsze problemy, z którymi nie potrafię sobie poradzić.
Do odczytu zawartości plików csv skrzystałem z biblioteki import au.com.bytecode.opencsv.CSVReader;

Mam problem z przechwytywaniem wyjątków, a właściwie nie do końca z tym, ale z tworzeniem samego kodu, gdy wyjątek nie jest przechwycony (plik został zaczytany poprawnie).

import au.com.bytecode.opencsv.CSVReader;
import java.io.FileReader;


/
public class Projekt {


    @SuppressWarnings("empty-statement")
    public static void main(String[] args) {
        // TODO code application logic here
        String fileName = "Dostawcy.csv";
        String tab_dost[];
        String tekst[];
        CSVReader wczytaj;
        
        try {
        wczytaj = new CSVReader(new FileReader(fileName));
        
        // Łapanie wyjątków
             } catch(Exception e) {
                 System.out.println(e.getMessage());
                 System.out.println("BŁĘDNY PLIK");
             };
        
             while((tekst = wczytaj.readNext())!= null)
                     {
                         System.out.println(tekst[0] + "," + tekst[1]);
                     }
       
    }
    
} 

Ten kod źródłowy rzuca mi następującym błędem:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.io.IOException; must be caught or declared to be thrown
at projekt.Projekt.main(Projekt.java:39)
Java Result: 1

A kiedy próbuję zrobić coś takiego:

import au.com.bytecode.opencsv.CSVReader;
import java.io.FileReader;

public class Projekt {

    @SuppressWarnings("empty-statement")
    public static void main(String[] args) {
        // TODO code application logic here
        String fileName = "Dostawcy.csv";
        String tab_dost[];
        String tekst[];
        
        try {
        CSVReader wczytaj = new CSVReader(new FileReader(fileName));
        
         while((tekst = wczytaj.readNext())!= null)
                     {
                         System.out.println(tekst[0] + "," + tekst[1]);
                     }
        // Łapanie wyjątków
             } catch(Exception e) {
                 System.out.println(e.getMessage());
                 System.out.println("BŁĘDNY PLIK");
             };
        
            
       
    }
    
} 

to wyrzuca mi błąd, że nie ma pliku.
run:
1
BŁĘDNY PLIK
BUILD SUCCESSFUL (total time: 0 seconds)

Co najlepsze, kiedy z try usunę while, to plik poprawnie wczytuje. Proszę o pomoc jak rozwiązać ten problem, żebym mógl przerzucić dane do tabeli.

0

Oszukujesz, pierwszy kod jest poprawny i nie ma 39 wierszy. Wniosek, nie podałeś całego kodu.

0

Tak, masz rację. Wyciąłem niepotrzebne komentarze :D

Ale już rozwiązałem swój problem.

try {
        wczytaj = new CSVReader(new FileReader(nazwa_pliku));
        
            try {
                while((temp = wczytaj.readNext())!= null) wiersze++;
                
        // Łapanie wyjątków
            } catch(Exception e) {
                System.out.println(e.getMessage());
                System.out.println("Nie wczytano danych");
            }

        // Łapanie wyjątków
             } catch(Exception e) {
                 System.out.println(e.getMessage());
                 System.out.println("BŁĘDNY PLIK");
             } 

Wątek do zamknięcia.

0

Łap konkretny wyjątek a nie Exception, bo jeżeli rzuci Ci czymś dziwacznym to nawet nie będziesz to tym wiedział

1 użytkowników online, w tym zalogowanych: 0, gości: 1