public Section(Course course, String sectionNumber) throws SectionException{try {/* No checking needed as a course is defined by another class. */this.thisCourse = course;this.sectionNumber = DEFAULT_SECTION_NUMBER;if( isValidSectionNumber(sectionNumber) ) this.sectionNumber = sectionNumber;} catch( ValidationException ex ) { throw new SectionException("Error in constructor", ex);}}你好,這是我的代碼,如果這個(gè)構(gòu)造函數(shù)失敗,我需要拋出一個(gè)SectionException,但它不允許我這樣做,因?yàn)椤盁o法訪問ValidationException的catch塊。這個(gè)異常永遠(yuǎn)不會(huì)從try語句主體中拋出”我該如何修復(fù)它?這是運(yùn)行良好的類似代碼public Student(String studentID, String firstName, String lastName) throws StudentException{ /* Initialize with the provided data using the validated values. */ try { if( isValidStudentID(studentID) ) this.studentID = studentID; if( isValidFirstName(firstName) ) this.firstName = firstName; if( isValidLastName(lastName) ) this.lastName = lastName; } catch( ValidationException ex ) { throw new StudentException("Error in constructor", ex); }}
1 回答

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的 catch 塊無法訪問,因?yàn)?try 塊中沒有任何內(nèi)容拋出ValidationException. 要么手動(dòng)拋出此異常,例如:
if (isValidSectionNumber(sectionNumber))
this.sectionNumber = sectionNumber;
else
throw new ValidationException("Validation error: section number invalid");
或者讓你的捕獲接受一般錯(cuò)誤,例如
catch (Exception e) { /* other code here */ }
或者,您也可以從 if 條件中使用的方法之一拋出它。
我猜想在您提供的工作代碼中,一個(gè)或多個(gè)isValidStudentId(), isValidFirstName(),isValidLastName()會(huì)拋出一個(gè)ValidationExceptionwhere ,而在您的代碼中則不會(huì)。沒有看到這一切就無法判斷。
添加回答
舉報(bào)
0/150
提交
取消