ユーザーが予約の日付、説明、予約の種類を入力できる予約プログラムを書いています。日付の範囲を印刷する「印刷範囲」を選択するまですべてが正しく機能し、これを選択すると、開始日と終了日を入力するように指示され、プログラムはそれらの日付の間からすべての予定をプルしますそして、それらを出力ボックスに表示します。
印刷範囲で発生するエラーは次のとおりです。
AppointmentNew.Java:68: unreported exception Java.text.ParseException; must be caught or declared to be thrown
Date lowDate = sdf.parse(stdin.nextLine());
^
AppointmentNew.Java:70: unreported exception Java.text.ParseException; must be caught or declared to be thrown
Date highDate = sdf.parse(stdin.nextLine());
^
AppointmentNew.Java:77: unreported exception Java.text.ParseException; must be caught or declared to be thrown
Date newCurrentDate = sdf.parse(currentDate);
私はおそらくtry/catchブロックを実行する必要があると思いますが、その方法がよくわからないので、誰かが私にこれらのエラーを修正するための回答または例を提供できるかどうか疑問に思っていました。
解析エラーが発生していると思われるコードの一部を次に示します。
import Java.util.*;
import Java.text.SimpleDateFormat;
import Java.util.Date;
public class AppointmentNew
{
public static void main (String[] args) throws Exception
{
if (choiceNum == 2)
{
System.out.print("\n\n\tEnter START Date in mm/dd/yyyy format: ");
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Date lowDate = sdf.parse(stdin.nextLine());
System.out.print("\n\n\tEnter END Date in mm/dd/yyyy format: ");
Date highDate = sdf.parse(stdin.nextLine());
for(int i = 0; i < list.size(); i++)
{
int dateSpot = list.get(i).indexOf(" ");
String currentDate = list.get(i);
currentDate.substring(0, dateSpot);
Date newCurrentDate = sdf.parse(currentDate);
if (newCurrentDate.compareTo(lowDate) >= 0 && newCurrentDate.compareTo(highDate) <= 0)
{
System.out.println("\n\t" + list.get(i));
}
}
}
解析例外はチェック例外なので、処理する必要があります。スローするか、キャッチブロックを試してください。
public static void main (String[] args)
する必要があります
public static void main (String[] args) throws ParseException
またはキャッチブロックを試してください
try {
//All your parse Operations
} catch (ParseException e) {
//Handle exception here, most of the time you will just log it.
e.printStackTrace();
}
問題のあるコードをtry catch
で囲みます-これは、エラーをキャプチャしてログに記録し、うまくいけば何かを実行できるようになります
try { // add this line
System.out.print("\n\n\tEnter START Date in mm/dd/yyyy format: ");
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Date lowDate = sdf.parse(stdin.nextLine());
System.out.print("\n\n\tEnter END Date in mm/dd/yyyy format: ");
Date highDate = sdf.parse(stdin.nextLine());
for(int i = 0; i < list.size(); i++)
{
int dateSpot = list.get(i).indexOf(" ");
String currentDate = list.get(i);
currentDate.substring(0, dateSpot);
Date newCurrentDate = sdf.parse(currentDate);
if (newCurrentDate.compareTo(lowDate) >= 0 && newCurrentDate.compareTo(highDate) <= 0)
{
System.out.println("\n\t" + list.get(i));
}
}
} catch (ParseException ex) {
ex.printStackTrace(); // or log it using a logging framework
}
または、メインで投げる-ここでは、次のように言います:このメソッドを呼び出しているのが誰であっても、この問題が発生した場合は注意してください:
public static void main (String[] args) throws Exception