IronLanguages / IronLanguages/ironpython3

Feature: Unify `System.Exception` with `BaseException`

Open
#1,816 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

.NET interop
Dominant language
C#
Stars
2.8k
Forks
316
Avg merge
1d 9h
Merged PRs (30d)
1

Description

[!NOTE]
This issue is the perfect opportunity to demonstrate the new issue templates introduced in #1812!

📄 Description

Currently, raising a .NET exception that derives from System.Exception using the raise keyword results in the following error: TypeError: exceptions must derive from BaseException.
The IronPython compiler should allow exceptions from .NET classes to be raised using Python's built in raise function.

🗃️ Alternative solutions
  • Replace BaseException entirely with System.Exception (best)
  • Allow BaseException and System.Exception to co-exist as different types of exceptions
👥 Intended Use-Case

This would allow for better use of the existing CLR exception types.

📸 Assets

image

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the raise keyword and built-in raise path, then inspect how raised values are validated against BaseException and System.Exception. Done means CLR exception types deriving from System.Exception can be raised without the reported TypeError, with the chosen relationship between the two exception types documented by tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, python
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.