code: def handling_errors(ignore_exc=None, *, log_err=None):
      try:
          yield
      except _errors.OSMismatchError as exc:
          if not ignore_exc(exc):
              raise  # re-raise
          if log_err is not None:
              log_err(
                  f'<OS mismatch (expected {" or ".join(exc.expected)})>'
              )
          return None
      except _errors.MissingDependenciesError as exc:
          if not ignore_exc(exc):
              raise  # re-raise
          if log_err is not None:
              log_err(f"<missing dependency {exc.missing}")
          return None
      except _errors.ErrorDirectiveError as exc:
          if not ignore_exc(exc):
              raise  # re-raise
          if log_err is not None:
              log_err(exc)
          return None
  
imports: import contextlib
  import logging
  import os
  import os.path
  import platform
  import re
  import sys
  from c_common.fsutil import match_glob
  from c_common.tables import parse_table
  from ..source import resolve, good_file
  from .None import errors
  from .None import pure, gcc
  from .errors import PreprocessorError, PreprocessorFailure, ErrorDirectiveError, MissingDependenciesError, OSMismatchError
  from .common import FileInfo, SourceLine
label_desc: Use image node_id 9 for calling a global function with example usage: handling_errors(ignore_exc) and returns: None, None, None