Agar chiqish istisnosiz ro'y bergan dasturning sinov natijalarini qanday saqlash kerak?

Dasturda mantiqqa kirishim kerak. Dasturimning mantiqiy asoslari quyidagicha ko'rinadi:

- Ask user to select input file;
-- If exception --> error message, exit program;
-- Otherwise --> continue program, perform tests;
- After tests have been completed, ask user to select output file;
-- If exception --> error message, exit program;
-- Otherwise --> save results to file, exit program;

Muammo shundaki, agar foydalanuvchi yaroqsiz chiqish faylini aniqlasa, barcha sinov natijalari yo'qoladi va dastur tugaydi. U yaroqsiz chiqdi faylini tanlagan bo'lsa, foydalanuvchi chiqdi faylini tanlashda ikkinchi tashabbusni berishni xohlayman.

Mening chiqish kodimga quyidagi o'xshaydi:

public void printToFile() {

    JFileChooser outputFile;
    File outFileName;

    outputFile = new JFileChooser();

    outputFile.showSaveDialog(null);
    outFileName = outputFile.getSelectedFile();
    try {
        PrintStream outFile = new PrintStream(outFileName);
       //print results to file
    } catch (Exception e) {
        System.out.print("Can't be saved to this file! \n");
        System.exit(0);//exit program
    }
}

Fikrimcha bitta kod hal qiluvchi kodni catch blokiga almashtirishdir.

catch (Exception e) {
    System.out.print("Can't be saved to this file! \n");
    printToFile();
}

Biroq, agar foydalanuvchi noto'g'ri yo'l tutganini tushunmasa, u xuddi shu faylni qayta-qayta tanlashi mumkin, shunda u (sort) cheksiz pastadir hosil qiladi. Ushbu uslubga alternativa bormi, yoki loopning oldini olish uchun usul bormi? Yoki borish usulini men keltirgan usulmi?

0
Nima uchun System.exit() o'rniga fayl topilmasa, vaziyatni takrorlaydigan vaqtli loopni ishlatmaslik kerak?
qo'shib qo'ydi muallif user991710, manba

2 javoblar

U uchun uning yordami bo'lishi mumkin ... istisno bo'lgandan so'ng siz o'zingiz tanlagan O/p faylida nima muammo borligini foydalanuvchiga tegishli xabarni ko'rsatishingiz mumkin ...
va hisoblagichni orqasidagi asosiy fikrni foydalanuvchi 2 yoki 3 marta noto'g'ri faylni tanlang, shundan keyin dastur tugaydi ...

0
qo'shib qo'ydi

Bu cheksiz pastadirga o'xshaydi, lekin u emas. Tashqi holatni kutish. Sizga qancha vaqt kutishni xohlaysiz? Ammo ko'p holatlarda siz foydalanuvchini bekor qilishga ruxsat berganingizdan so'ng sizda maksimal qayta ishlash yoki takrorlash shart emas. Agar foydalanuvchi ma'lumotni berishni istamasa, foydalanuvchi sizni bekor qilish yoki dasturni o'ldirishni boshlaydi. Yoki ilova doimiy ishlaydi. Ehtiyotasizmi?

solishtiring

while (needsUserData) {
   askForUserData()
}

bilan

waitForUserData()

Faqatgina retsüryonni qilmang, siz bo'shashma joyini ishlatishingiz mumkin =)

0
qo'shib qo'ydi
Rahmat, while loop, aslida takrorlashdan ko'ra yaxshiroq yechimdir. Yaxshi variantlar taklif qilinmasa, men uchun bu yo'l :)
qo'shib qo'ydi muallif Maza89, manba