You're taking the right approach to rescuing exceptions however you are taking the wrong approach to your validations by using exceptions.
Rails already has a built-in mechanism for dealing with whether or not a record is a valid so instead of raising an exception what you should be doing is adding your error to the errors array. This will make @yourobject.valid? and @yourobject.save return false.
Theres also no need to set the validation method as a callback as Rails already has validation hooks you can tie into. So you should do something like this:
class News < ActiveRecord::Base
self.errors.add(:created_on, "is invalid") if self.created_on > Time.now
class Publish::NewsController < Publish::BaseController
@news = News.new(params[:news])
flash[:notice] = 'News was successfully created.'
redirect_to :action => 'list'
flash[:error] = @news.errors
render :action => 'new'
More information on Rails errors and validations: