From 757fc95315c63ac5aad8615293c422c62f50c159 Mon Sep 17 00:00:00 2001 From: Glenn Rice Date: Tue, 14 Jul 2026 16:49:50 -0500 Subject: [PATCH] Suggestion from #3043. Wrap the `unarchiveCourse` call in the `do_unarchive_course` method of the `WeBWorK::ContentGenerator::CourseAdmin` package in an `eval`, so that exceptions are caught. The exceptions are already checked for on the next line, but deal with the exception message better. Instead of displaying `$@` which might include a backtrace, show `$@->message` in the case that `$@` is an object. --- lib/WeBWorK/ContentGenerator/CourseAdmin.pm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/WeBWorK/ContentGenerator/CourseAdmin.pm b/lib/WeBWorK/ContentGenerator/CourseAdmin.pm index 4a3769cb5a..d407a0a27a 100644 --- a/lib/WeBWorK/ContentGenerator/CourseAdmin.pm +++ b/lib/WeBWorK/ContentGenerator/CourseAdmin.pm @@ -1200,14 +1200,15 @@ sub do_unarchive_course ($c) { my $unarchive_courseID = $c->param('unarchive_courseID') || ''; - unarchiveCourse( - newCourseID => $new_courseID, - archivePath => "$ce->{webworkDirs}{courses}/$ce->{admin_course_id}/archives/$unarchive_courseID", - ce => $ce, - ); + eval { + unarchiveCourse( + newCourseID => $new_courseID, + archivePath => "$ce->{webworkDirs}{courses}/$ce->{admin_course_id}/archives/$unarchive_courseID", + ce => $ce, + ); + }; if ($@) { - my $error = $@; return $c->tag( 'div', class => 'alert alert-danger p-1 mb-2', @@ -1215,7 +1216,7 @@ sub do_unarchive_course ($c) { $c->tag( 'p', $c->maketext('An error occurred while unarchiving the course [_1]:', $unarchive_courseID) ), - $c->tag('div', class => 'font-monospace', $error) + $c->tag('div', class => 'font-monospace', ref $@ ? $@->message : $@) )->join('') ); } else {