نقل قول: java.lang.Exception
خب حتما این فیلد در پایگاه دادتون Unique هست و در نتیجه اگر بخواید نام تکراری ایجاد کنید Exception میده. همین ConstraintViolationException به این معنی که یکی از شرایط نقض شده. شما اومدید در خط 14 این رو catch کردید، بعد دوباره پایینترش نوعش رو مشخص کردید و دوباره throw new Exception کردید (حالا اینجا CRUDException). پس طبیعی در صورت نقض شرایط باز یک CRUDException ایجاد میشه و توضیحاتشم که نوشتید error.repeated_username . هر چند " و " دو طرف این متغیر رو متوجه نشدم.
نقل قول: java.lang.Exception
سپاس از شما
بله درسته همچین کاربری در پایگاه داده هست ولی پیغام من همراه با java.lang.Exception: این کد چاپ میشه ؟
و دابل کوتیشن ها رو گذاشتم که مثل fmt:message عمل کنه درواقع کلمه فارسی نداشته باشم تو کدم
نقل قول: java.lang.Exception
منظورتون اینه چرا java.lang.Exception ایجاد میکنه نه یک Exception دیگه؟ شاید به خاطر اینه که شما در throw کردن CRUDException اومدید یک new Exception() کردید.
در کل این طرز کد نویسی صحیح نیست و اینقدر Exception تو Exception شده. همچنین Exception فقط یک String نیست و اطلاعات بیشتری رو همراش داره یکیش همین نوع Exception هست و بسته به نوع catch کردنش برخی از این اطلاعات نمایش داده میشه. از اونجایی که شما Exception رو throw کردید و احتمالا جای دیگه ای catch نکردید وقتی به خود main میرسه و میره بالاتر خود jvm اون رو میگیره و بخشی از اطلاعاتش رو نمایش میده. مثل nullpointerexception که اگر catch نکنید خود jvm میگیره و trace شدش و خیلی اطلاعات دیگه رو تو خروجی نمایش میده.
به هر حال من دقیقا متوجه نشدم، الان مشکل شما با این کد چیه و انتظار داشتید چه خروجی بده؟!
نقل قول: java.lang.Exception
مشکل حل شد. سپاس@ExceptionHandler(CRUDException.class)
public ModelAndView handleCustomException(CRUDException ex) {
ModelAndView model = new ModelAndView(ex.getMessage());
String errorMessage = messageSource.getMessage("crud_failed", null, "Success message",
LocaleContextHolder.getLocale());
model.addObject("errorMessage", errorMessage);
model.addObject("errorCouse", ex.getCause().getMessage());
return model;}